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