Android开发:《Gradle Recipes for Android》阅读笔记(翻译)5.1——单元测试
问题:
你想要测试app中的非android部分。
解决方案:
可以使用Android Studio1.1里面增加的单元测支持和Android的Gradle插件。
讨论:
ADT插件只支持集成测试,并且要求开发者创建一个单独的测试项目。转化到Android Studio和Gradle的其中一个好处就是支持在android项目内进行测试。
在AndroidStudio1.1之前和相关的Gradle插件,这些测试仍然被限制集成测试,意味着,你需要一个模拟器或者连接的设备才能进行测试。集成测试可以非常强大和有用,是5.3和5.4节的一部分。
这节讨论的是真正的单元测试,就是排在开发机器本地的JVM上的。不像集成测试那样使用androidTest资源文件夹,单元测试在src/test/java目录下面。
当你使用Android Studio新建一个Android项目时,一个示例的单元测试已经为你提供。它在src/test/java树下,但是不在classpath下面:
生成的测试如下:
这类测试对于任何使用过Junit的java开发者都应该熟悉。Junit4的@Test注解表示addition_isCorrect 方法是一个而测试方法。assertEquals方法是Assert类里面的静态方法(注意使用static的import引入所有的静态方法),第一个参数是正确的答案,第二个参数是实际的测试值。
为了运行测试,你需要做的是在Build Variants视图下选择Test Artifact:
通过选择“Unit Tests”,src/test/java目录树被Android Studio识别用于包含测试资源,com/oreilly/helloworld数被包含在包下面。
在执行单元测试之前的最后一步。你需要确认Junit被包含在testCompile里面。如下:
你现在可以使用Gradle的test运行的测试:
为每个变体运行一个测试,在app/build/reports/tests目录下面生成HTML:
在目录下面打开index.html文件,报告如下图:
你可以下钻到ExampleUnitTest类下面,看具体的结果:
可以使用--tests标识限制测试只测试一个变体,甚至一个测试类:
变体任然被构建,但是只有指定的那个,并且只有在ExampleUnitTest类里面的测试才被运行。
你也可以选择右击测试,在Android Studio里面运行它。但是它只为当前的变体,提供了一个漂亮的结果展示:
唯一的问题是,它没有运行任何有意义的东西。这就是关键。当使用JUnit支持的时候,你不能测试任何依赖于Android SDK的东西。JUnit测试只支持那些应用中纯JAVA部分。
在4.5节,library连接网络服务,下载JSON数据,解析,并且更新TextView的值。如果你喜欢,你可以测试过程的一部分:
好消息是单元测试非常快,至少相对于集成测试,因为它们不需要部署到真机或者模拟器上面。如果你有不依赖于Android类的java类,单元测试是一个非常好的途径来确保它们顺利工作。测试驱动的开发在移动世界还没有像在常规的java世界里面一样被接受,但是它是一个好的开始。
补充:
Robolectric 项目被设计用来不使用模拟器或者连接设备来运行集成测试,它表现的像一个Android SDK的mock。很多人对它的看法不是很一致。
Android开发:《Gradle Recipes for Android》阅读笔记(翻译)5.1——单元测试的更多相关文章
- Android开发工具全面转向Android Studio(3)——AS project/module的目录结构(与Eclipse对比)
如果AS完全还没摸懂的,建议先看下Android开发工具全面转向Android Studio(2)——AS project/module的CRUD. 注:以下以Windows平台为标准,AS以目前最新 ...
- Android开发工具全面转向Android Studio(2)——AS project/module的CRUD
本文有些地方可能需要衔接Android开发工具全面转向Android Studio(1)——准备开发环境,读起来效果会更好. 这个世界很奇妙,所有的东西离不开CRUD,即增删改查.即使人本身也遵循这个 ...
- 配置cordova的android开发环境(无android studio)
原文:配置cordova的android开发环境(无android studio) 趁元旦放假想试一下cordova,不想安装庞大的android studio,所以想最小化安装,居然花了一整天的时间 ...
- 收集整理Android开发所需的Android SDK、开发中用到的工具、Android开发教程、Android设计规范,免费的设计素材等。
AndroidDevTools Android Dev Tools官网地址:www.androiddevtools.cn 收集整理Android开发所需的Android SDK.开发中用到的工具.An ...
- Eclipse搭建Android开发环境并运行Android项目
Eclipse搭建Android开发环境并运行Android项目 (详细) 安装环境: window 10 64位 安装工具: JDK.Eclipse.SDK.ADT 安装步骤: 1.JAVA JDK ...
- Android开发:《Gradle Recipes for Android》阅读笔记(翻译)6.2——DSL文档
问题: 你需要查找Android Gradle DSL的完整文档. 解决方案: 访问Gradle Tools网站,从Android开发网站下载ZIP文件. 讨论:Android开发网站首页有完整的AP ...
- Android开发:《Gradle Recipes for Android》阅读笔记(翻译)2.3——用Eclipse ADT导出App
问题: 想在一个已经存在的Eclipse ADT的项目中使用Gradle 解决方案: Eclipse ADT插件可以帮助生成Gradle文件 讨论: Eclipse的ADT插件是在2013年推出Gra ...
- Android开发:《Gradle Recipes for Android》阅读笔记1.2
在android开发中会需要配置使用app的android SDK的最低版本和目标版本,这个是bulidl.gradle的android模块设置.默认有以下几个设置: applicationId,这个 ...
- Android开发:《Gradle Recipes for Android》阅读笔记(翻译)4.5——使用Android Libraries
问题: 你想要在app当中增加新的library模块 解决方案: 使用library插件,增加一个library模块作为依赖. 讨论: 不可以通过使用java库给app增加许多功能,通常是使用jar包 ...
随机推荐
- Java 线程池的原理与实现 (转)
最近在学习线程池.内存控制等关于提高程序运行性能方面的编程技术,在网上看到有一哥们写得不错,故和大家一起分享. [分享]Java 线程池的原理与实现 这几天主要是狂看源程序,在弥补了一些以前知 ...
- 基于RxJava2+Retrofit2简单易用的网络请求实现
代码地址如下:http://www.demodashi.com/demo/13473.html 简介 基于RxJava2+Retrofit2实现简单易用的网络请求,结合android平台特性的网络封装 ...
- 基于layui的框架模版,采用模块化设计,接口分离,组件化思想
代码地址如下:http://www.demodashi.com/demo/13362.html 1. 准备工作 编辑器vscode,需要安装liveServer插件在前端开启静态服务器 或者使用hbu ...
- MQTT Client软件-MQTTBox
最近发现了一个连接mqtt broker的软件:MQTTBox.GitHub地址:https://github.com/workswithweb/MQTTBox 官网网站的介绍为:使用MQTTBox增 ...
- MongoDB GridFS规范
This is being changed for 2.4.10 and 2.6.0-rc3. Tyler Brock's explanation: Now that the server uses ...
- Atitit.ati str 字符串增强api
Atitit.ati str 字符串增强api 1. java StringUtils方法全览 分类: Java2011-11-30 17:22 8194人阅读 评论(2) 收藏 举报 javas ...
- ubuntu 安装python3.5
wget https://www.python.org/ftp/python/3.6.0/Python-3.6.0.tar.xz xz -d Python-.tar.xz .tar cd Python ...
- JS面试题目
哪些地方会出现css阻塞,哪些地方会出现js阻塞? js的阻塞特性: 所有浏览器在下载JS的时候,会阻止一切其他活动,比如其他资源的下载,内容的呈现等等.直到JS下载.解析.执行完毕后才开始继续并行下 ...
- oracle 创建表空间及oracle 11g表空间之最大最小
/*分为四步 *//*第1步:创建临时表空间 */create temporary tablespace emaoyi_temp tempfile 'D:\app\Administrator\prod ...
- Linux编程学习路线
参考这篇博客 一本书一本书的啃吧,再多撸点项目