Robotium框架
Robotium是一个很常用的自动化测试框架,既可以进行白盒测试,也可以进行黑盒测试。Robotium实质上是建立在Instrumentation上的一系列工具方法。
由于Instrumentation通常不能获取系统权限(需要系统签名,而系统签名文件在编译系统时已经被编译进去,不能获取到),于是Robotium只能进行单个APP的测试,不能跨应用测试。
基于Rototium框架的测试
Robotium也是一款比较成熟的安卓测试框架,不仅可以进行白盒测试,也可以进行黑盒测试。只要能获取Activity和Instrumentation实例,即可使用Robotium。因此直接使用Instrumentation Test Runner即可。
相比Espresso,Robotium的配置简单很多,在gradle中只需要添加一个依赖项即可,基本上也不用担心冲突。
dependencies {
androidTestCompile 'com.jayway.android.robotium:robotium-solo:5.1'
}
还是和Espresso同样的一个例子,点击按钮,并检查文本框中是否展示了预期的文本,代码如下。
public class MainActivityTest extends ActivityInstrumentationTestCase2 {
private Solo solo;
public MainActivityTest() {
super(MainActivity.class);
}
@Override
protected void setUp() throws Exception {
super.setUp();
solo = new Solo(getInstrumentation(), getActivity());
}
public void testHello() throws Exception {
// 等待Activity启动
solo.waitForActivity("MainActivity", 3000);
// findView
View button = solo.getView(R.id.button);
TextView text = (TextView) solo.getView(R.id.text);
// 点击按钮
solo.clickOnView(button);
// 延时
solo.sleep(100);
// 检查测试结果
assertEquals(solo.getString(R.string.hello_test), text.getText());
// 延时
solo.sleep(5000);
}
}
基于Robotium的黑盒测试
Robotium也可以用于黑盒测试,很多地方和前面的白盒测试写法类似;不同是,黑盒测试由于不能直接访问待测APP源码,所以会使用反射来访问。
白盒测试直接向父类构造函数传入Class对象获取Activity实例,黑盒测试则可以通过反射获取Activity的Class,对比如下。
public class MainActivityBaseTest extends ActivityInstrumentationTestCase2 {
public MainActivityBaseTest() {
super(com.jzj1993.unittest.MainActivity.class);
}
}
public class MainActivityBaseTest extends ActivityInstrumentationTestCase2 {
public MainActivityBaseTest() throws ClassNotFoundException {
super(Class.forName("com.jzj1993.unittest.MainActivity"));
}
}
在白盒测试中可以直接访问R.class从而取得资源,而黑盒测试则利用Context.getResources().getIdentifier()
,从字符串获取资源。示例代码分别如下。
solo.getView(com.jzj1993.unittest.R.id.text);
solo.getView("com.jzj1993.unittest:id/text");
黑盒测试时,在设备上安装待测APK,而测试代码在单独的工程中编译,最后添加和待测APK一致的签名,安装到设备上运行即可。
2016-5-11补充:在独立的工程中用Android Studio进行Robotium黑盒测试,具体的配置方法可参考本系列第七篇。
最后,欢迎扫码关注微信公众号。程序员同行学习交流,聊天交友,国内外名企求职内推(微软 / 小冰 / Amazon / Shopee / Coupang / ATM / 头条 / 拼多多等),可加我微信 jzj2015 进技术群(备注进技术群,并简单自我介绍)。

本文由jzj1993原创,转载请注明来源:https://www.paincker.com/android-test-5
(标注了原文链接的文章除外)
暂无评论