1、多个测试用例运行时实际上是有顺序的,显示含有测试方法的类按照字母排序,同一个类里面的测试方法再按照字母排序,依次执行。所以可以通过添加前缀(A_,B_)等等调整测试顺序,让测试例子更符合渐进逻辑。
2、继承问题,理论上测试类可以继承ActivityInstrumentationTestCase2或者是它的子类,但是需要注意的是,如果是继承子类,那么子类中的测试方法在运行这个测试类的时候也会再次运行。
假设 A继承ActivityInstrumentationTestCase2且有测试方法testA;
B继承A,且有测试方法testB;
那么当运行测试时,测试顺序是
testA(A)--->testA(B)--->testB(B)
即testA会运行2次。
3、ActivityInstrumentationTestCase2<T>实际上API中要求指定被测试类的具体类型,但是在黑盒测试中,往往无法取得具体的测试类,在尝试直接用Activity代替时,测试效果不太理想,猜测可能是:
- 用Activity代替会令到启动被测试程序时出现未知的问题。(仅仅是根据现象猜测)
- 实测机子本身性能有问题导致测试效果不稳定,这个也是有可能的。
之后解决方法是不指定具体类型:
@SuppressWarnings({ "unchecked", "rawtypes" }) public abstract class Framework extends ActivityInstrumentationTestCase2{ private static final String LAUNCHER_ACTIVITY_FULL_CLASSNAME = "com.***.LauncherActivity"; private static Class launcherActivityClass; static { try { launcherActivityClass = Class .forName(LAUNCHER_ACTIVITY_FULL_CLASSNAME); } catch (ClassNotFoundException e) { throw new RuntimeException(e); } } public Framework() throws ClassNotFoundException { super(launcherActivityClass); } }
不过会提示warning,可添加注释消除warnning