单元测试
在软件开发中一直在推崇TDD(测试驱动开发),但是一直不能被有效的执行或者并不是真正的测试驱动开发(先开发后写单元测试),因为我们懒!而Android开发又是大多应用层面的开发,很多都是和视图层紧密相连的,业务逻辑和view相绑定,这导致编写单元测试有相当大的困难,因此就我项目而言,只针对工具类、服务端API编写单元测试。关于Android Studio如何编写单元测试并运行,可以看之前写的一篇文章Android Studio 单元测试
代码覆盖率
编写好单元测试后,我们需要知道,测试用例是否覆盖了代码的所有分支情况,这样才能保证代码的可靠性、正确性。
编写测试用例
如果使用Android Studio创建项目的话,那么默认的会在androidTest包下生成一个ApplicationTest类,在这里面可以写测试用例。
上图写的是一个SharedPreferences Util工具类的测试用例。
如果你的测试用例不想写在这个包下,想自定义,也可以在项目的build.gradle写如下的配置
android {
sourceSets {
androidTest{
java.srcDirs = ['src/com/helen/andbase/tests']
}
}
Gradle配置jacoco
Jacoco是一个开源的覆盖率工具。这里讲下gradle如何配置。
首先要在项目的build.gradle引入插件,语句如下:
apply plugin: 'jacoco'
然后注明使用的版本号
jacoco{
version "0.7.4.201502262128"
}
接着,申明一个gradle task
task jacocoTestReport(type:JacocoReport,dependsOn:"connectedAndroidTest"){
group = "Reporting"
description = "Generate Jacoco coverage reports after running tests."
reports{
xml.enabled = false
html.enabled = true
csv.enabled = false
}
classDirectories = fileTree(
dir : "