一、单元测试
单元测试一直是编程开发重要的一部分,但在 Android 应用开发经常被忽视,转而由人工测试替代。除了 Android 功能测试涉及代码编写外,还有上下依赖的 context 传递,但这一切都不该是我们直接放弃单元测试的原因,单元测试除了在代码编写后检查设计功能的完整性,还能快速捕获和修复因代码更改(重构、优化等)带来的回归问题。
今天主要介绍 Robolectric 的环境搭载,如果对于单元测试有兴趣的话,可以点击阅读链接了解 单元测试
二、Robolectric
Pivotal实验室推出的Robolectric,通过使用Robolectrict模拟Android系统核心库的Shadow Classes的方式,我们可以像写本地测试一样写这类测试,并且直接运行在工作环境的JVM上
简单说,它能够模拟出 Android 系统,直接在jvm测试你的代码,而不用把你的代码编译在你的开发设备上运行。
为什么要使用它,它解决的是什么问题?
众所周知 Android 存在上下文依赖,如果用其他测试框架(如junit),大部分测试功能逻辑没有问题,一旦涉及到 context 的功能基本歇菜,比如我们测试 SharedPreferecnce,测试数据库(创建需要context)等等,所以引入这个框架可以让我们轻松模拟出 context 进行测试。当然,你的 activity 页面同样能进行测试。
如何使用
在 maven 中央仓库 搜索 robolectric,选择版本,在module build.gradle 添加依赖 testImplementation 'org.robolectric:robolectric:4.2.1'
再添加测试配置
android {
testOptions {
unitTests {
includeAndroidResources = true
}
}
}
点击同步,接下来就是编写测试用例,我们随便写一个。
ok,点击运行,我们可以在 run 中看到运行的日志,如下:
如果你的网络没问题,在等待下载成功后,你可以在 C:\Users\Administrator.m2\repository\org\robolectric\android-all 看到完整依赖库文件。那么你也可以停步在这,关闭这篇文章,因为本文讲的是远程下载失败,如何快速修复下载这个问题。
从日志截图我们可以看到,下载地址是 https://oss.sonatype.org/content/groups/public/
,提示连接超时。开始我们的补救措施
解决思路
-
确定需下载的版本,其实在写完测试用例后,运行,就能在 run 日志中看到版本号,我这边显示的版本是 4.1.2
-
确定要下载的文件
- 版本xx.jar
- 版本xx.jar.sha1
- 版本xx.pom
- 版本xx.pom.s