大家好,又见面了,我是你们的朋友全栈君。
这个月正式开始robotium的学习,生命不止,学习不止。作为一个初学者的我,尝试完了monkey跟monkeyrunner之后,严重意识到移动端也有更加高深的测试艺术。借用其他文章的话来说,这不仅是一门技术,而且是一门艺术。本系列将根据我的自学进度来写,凡事尝试了才会知道能不能行。本文将介绍robotium,不谈其他。
robotium 是 android 自带类 Instrumentation 的一个封装,方便测试人员直接调用封装好的接口,也就是说,实际上我们直接使用Instrumentation 也能够进行自动化测试,但robotium可以简化我们的测试步骤,我们只需要调用某个robotium的API,传几个参数,就等于我们在调用一部分的Instrumentation帮我们实现测试。
但是他是Instrumentation的优化版。为何这么说?请看以下几点(原文摘录自Android应用实战与调试91页):
1.robotium 测试用例虽然也是从 ActivityInstrumentationTestCase2 基类继承下来,但一般不会使用一个活动类型实例化 ActivityInstrumentationTestCase2 泛型类这是因为 robotium 一般用作集成测试,在一个测试过程中会同时测试到多个活动,只指定一个活动类型在逻辑上不成立,有时可以用待测应用的主界面来实例化它,但在没有应用源码时就无法在编译引入活动类型了。Java 语言建议给泛型类指定一个类型进行实例化,为了规避这个编译警告,需要在测试类型加上 SuppressWarnings(“rawtypes”) 标签。
2.由于测试类型没有指定待测活动类型,因此在类型的构造函数里,采用反射机制通过应用主界面的类型名称获取其类型构造测试用例,如代码的第 16 行。
3.在测试的准备函数 setUp 中,一般会通过调用 getInstrumentation() 和 getActivity()函数获取当前测试的仪表盘对象和待测应用启动的活动对象,并创建 robotium 自动化测试机器人 solo。跟仪表盘测试用例中的 setUp 函数一样,禁用触控模式、创建启动活动的意图对象这些操作都应该在 getActivity() 函数之前调用,如第 20 行。4)因为 robotium 进行的是集成测试,在测试过程中可能会打开多个活动,所以在测试结束后的扫尾函数 tearDown 中,会调用 robotium API 关闭所有的已打开活动,为后面执行的测试用例恢复测试环境。
robotium 的 API 设计类似后文将要讲解的 selenium 的机器人测试方式,可以将 solo 对象看成一个机器人,它的每个 API 可以看成机器人可以执行的一个动作,如 waitForView、searchButton 等,robotium 的 API 名称都采用谓语 + 宾语的方式命名,而且每个 API 都有完整的注释说明.
他的优点如下:
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/154669.html原文链接:https://javaforall.cn