前面学习了 instrumentation 框架,现在来学习 robotium 了解怎么使用不就是一个晚上的事吗,robotium 也是基于 Instrumentation 框架的。一般用于 app 的功能性测试,不能跨 app 一次只能运行一个 app。
好了下面就开始新建 robotium 工程。首先我们要去官网下载 robotium jar 包,下载最新的就好了。这里是下载地址:https://code.google.com/p/robotium/wiki/Downloads?tm=2,下载完了后就该导入到测试工程里了。
1.跟之前的 instrumentation 一样的建立个测试工程,继承 ActivityInstrumentationTestCase2.工程建立好后,右键点击测试工程,选择 build path——>configure build path 如图
在弹出的对话框里的 libraries 里选择 add external jars 里添加我们之前下载的 robotium jar 包,这就导入好了 robotium jar 包了。
我们在点击 order and export 选项,在这里面勾选 robotium jar 包。
然后点击 ok,这样我们就可以开始写代码了。
2.这里还是用之前的那个 app,这是一个很简单的 app,由于之前的那个 instrumentation 工程大家都不知道 app 是什么样的,这里就贴个图,主界面是这样的点击左边的 button 上面的 Hello World!会变成 Beautiful Girl
点击右边的跳转会跳转到另一个界面,如图
就是这么一个 app。同样我们要在 manifest.xml 文件里加上 instrumentation 这个标签,因为 robotium 也是继承的这个类。跟上一个工程一样,
然后就开始写代码了,robotium 的调用很简单,用 solo 这个类去调用,我们这里同时加入了上一篇文章 instrumentation 的方法,首先是声明我们会用到的控件和 activity,这里我要用到 instrumentation 里面 assertEquals 这个方法去断言 textview,所以要定义 textview1、activity 这两个变量。
然后是在默认的 setUp() 这个方法里去获取我们的控件和 avitivity 这些获取的方法必须写在 setUp() 这个方法里,因为 setUp() 这个方法是在执行每个 case 前都会执行的重置 app 把 app 还原的方法,tearDown() 这个方法是在执行完每个 case 后都会执行的清空 app 数据的方法。所以这些获取控件的方法必须要定义在 setUp() 这个方法里让执行每个 case 前重新去获取。
下面就可以开始写我们想要测试的 case 了,用 robotium 里面的 solo 这个方法去调用这些方法,这些方法可以去看 robotium 的源码,了解了 robotium 里的这些方法就随便调用就是了,我现在也一直在看,下面我会发出一个我在 github 上看到的一位大神对 robotium 源码全部注释了的链接,大家可以去下载看看。
好了,这就是一个简单的用 robotium 工具实现的测试 case,这里只是告诉了大家怎么去用 robotium 工具,没有去讲解 robotium 的源码是怎么实现这些操作的,大家可以去深入的了解 robotium 源码,这样对 robotium 里定义的方法都熟悉了调用起来也就方便了。Robotium 的源码注释链接:https://github.com/bobotiger2/robotium