robotium使用笔记

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

猜你喜欢

转载自assistne.iteye.com/blog/1963891