Android开发:《Gradle Recipes for Android》阅读笔记(翻译)5.3——使用Robotium进行功能测试

问题:

你想要使用Robotium库测试activity。

解决方案:

增加Robotium依赖,编写自己的测试脚本。

讨论:

Android Test Support Library提供类可以操作activity里的窗口部件,但是有更简单的方式操作Android UI。虽然这本书不是介绍测试的,但是可以很容易的将Robotium依赖增加到Gradle然后运行测试。

Robotium项目被描述成“像Selenium,但是为了Android”。这是一个自动化测试框架,可以很方便的为Android app编写出黑盒的UI测试。

只要在模块下面的Gradle配置文件里面增加Robotium的依赖:

考虑下面的叫做MyActivity的简单的activity,提示用户输入姓名,将它添加到Intent,打开WelcomeActivity欢迎用户:

Robotium提供了一个叫做com.robotium.solo.Solo,它包括了被测试的activity和Instrumentation对象。它允许你增加文字,点击按钮,和更多的操作,而不用担心是不是在UI线程。下面展示了一个在activity上的例子:

Robotium测试继承自ActivityInstrumentationTestCase2。Solo实例和activity一起被初始化。测试使用Solo类的方法,像enterText,clickOnButton或者searchText。

使用Robotium唯一的缺点就是测试使用旧的JUnit3的结构,有预先定义的setUp和tearDown方法,所有测试必须符合public void testXYZ格式。相对的,易于书写的测试还是很突出的。

测试类像其它Android测试易于存放在androidTest结构下面。通过connectedCheck任务在所有模拟器和连接的设备上执行。

下面显示在两个模拟器上运行的结果:

点击“Devices”按钮显示从device角度显示相同的结果:

Robotium的Github地址:https://github.com/robotiumtech/robotium

时间: 2024-10-13 00:55:20

Android开发:《Gradle Recipes for Android》阅读笔记(翻译)5.3——使用Robotium进行功能测试的相关文章

Android开发工具全面转向Android Studio(3)——AS project/module的目录结构(与Eclipse对比)

如果AS完全还没摸懂的,建议先看下Android开发工具全面转向Android Studio(2)——AS project/module的CRUD. 1.其实AS project/module的目录结构很简单,我浓缩成2张图给总结了,先看图,再看下面的文字,因为还有些细节图上体现不出来(我这个图上的项目来源于我之前的Eclipse项目,并且有lib项目库相互依赖) 2.上面的图很直观,但也很眼花缭乱,我再针对图总结下重点和疑问点. ①在AS的世界里,文件夹都以模块(module)为单位组织的,其

配置cordova的android开发环境(无android studio)

原文:配置cordova的android开发环境(无android studio) 趁元旦放假想试一下cordova,不想安装庞大的android studio,所以想最小化安装,居然花了一整天的时间才能正常编译cordova工程,记录一下过程,备将来参考. 安装环境:操作系统:windows 10 x64 第一步:安装nodejs,下载最新版本v10.15.0 第二步:设置npm安装源 npm config set registry http://registry.npm.taobao.org

【Android开发】完美解决Android完全退出程序

背景:假说有两个Activity, Activity1和Activity2, 1跳转到2,如果要在2退出程序,一般网上比较常见的说法是用 System.exit(0) 或是 android.os.Process.killProcess(android.os.Process.myPid()) 但实际应用中,并不是能够真正退出,问题出在?1跳转到2时,如果Activity1你finish掉了,两么是可以退出程序的,但有时1跳转到2时,我们不能将Activity1 finish掉,那么在Activit

Android开发:《Gradle Recipes for Android》阅读笔记1.2

在android开发中会需要配置使用app的android SDK的最低版本和目标版本,这个是bulidl.gradle的android模块设置.默认有以下几个设置: applicationId,这个是应用的包名,在google应用商店里必须是唯一的,在app的整个生命周期里是不能修改的,修改后会被认为是一个新的app minSdkVersion,设置app支持的sdk最低的版本.在google应用商店里,低于这个版本的机器是看不到这个app的 targetSdkVersion,设置app的目标

Android开发:《Gradle Recipes for Android》阅读笔记(翻译)6.2——DSL文档

问题: 你需要查找Android Gradle DSL的完整文档. 解决方案: 访问Gradle Tools网站,从Android开发网站下载ZIP文件. 讨论:Android开发网站首页有完整的API向导,Java相关文档,工具文档等.Android Gradle插件相关的内容却非常的少. Android Gradle插件的主要文档在点击这里,包含了最新的信息: 用户向导非常有用,但是经常过期...(这也是这本书存在的意义): 另外一个Android 插件工具的网站是DSL Reference

Android开发:《Gradle Recipes for Android》阅读笔记(翻译)5.1——单元测试

问题: 你想要测试app中的非android部分. 解决方案: 可以使用Android Studio1.1里面增加的单元测支持和Android的Gradle插件. 讨论: ADT插件只支持集成测试,并且要求开发者创建一个单独的测试项目.转化到Android Studio和Gradle的其中一个好处就是支持在android项目内进行测试. 在AndroidStudio1.1之前和相关的Gradle插件,这些测试仍然被限制集成测试,意味着,你需要一个模拟器或者连接的设备才能进行测试.集成测试可以非常

Android开发:《Gradle Recipes for Android》阅读笔记(翻译)2.3——用Eclipse ADT导出App

问题: 想在一个已经存在的Eclipse ADT的项目中使用Gradle 解决方案: Eclipse ADT插件可以帮助生成Gradle文件 讨论: Eclipse的ADT插件是在2013年推出Gradle之前主要的android开发工具.现在ADT项目被android studio所替代,但是还是有遗留的项目存在. ADT插件可以基于已经存在的项目结构和依赖帮你生成gradle的配置文件. 虽然这已经不是一个主流的机制,但是实践中会遇到这样的项目.这也是一个很好地机会,展示Gradle中的so

Android开发:《Gradle Recipes for Android》阅读笔记(翻译)3.3——整合resource文件

问题: 想要在product的flavor里面改变图片,文字或者其它资源. 解决方案: 在flavor里面增加合适的资源目录,并且改变他们包含的值. 讨论: 考虑下3.2章的"hello world with attitude"应用,它定义了三个flavors:arrogant,friendly和obsequious.在每个情况下,app提示用户输入姓名,并且用这个姓名欢迎用户.每个的java代码都是相同的,但是看上去和感觉上好像每个都不一样. product的flavors在grad

Android开发:《Gradle Recipes for Android》阅读笔记(翻译)3.1——使用Build Types

问题: 你想要自定义debug和release的build types,并且新建一些新的types. 解决方案: 使用buildTypes块配置build types. 讨论: build type决定了app如何被打包.默认的,android的gradle插件支持两种build type:debug和release.两种都在模块的build.gradle文件中的buildTypes块下定义.在新的项目下的buildTypes块如下: 例子中值显示了release的build,但是想要编辑默认配