生成最后的报告,折腾了一天,记录一下,希望对大家有帮助。
环境(经测试没有发现版本的问题,不过这里还是贴出供参考)
Android Studio Arctic Fox | 2020.3.1 Patch 3
classpath 'com.android.tools.build:gradle:7.0.3'
classpath 'org.jetbrains.kotlin:kotlin-gradle-plugin:1.5.20'
jacoco.gradle:
apply plugin:'jacoco'
jacoco{
toolVersion = "0.8.7"
}
android {
buildTypes {
debug{
testCoverageEnabled = true
}
}
}
主工程(或library)的build.gradle引入:
plugins {
id 'com.android.application'
id 'kotlin-android'
}
apply from: "jacoco.gradle"
android {...}
...
使用:
使用createDebugCoverageReport命令即可,报告位置如下
踩坑记录
- 网上有很多自己保存.ec文件的,或者是 Unexpected SMAP line:错误、jacoco 0.8.7版本等问题的,经过反复测试,在上诉环境中已经不需要那么麻烦了。
- 必须包含一个Test是对src目录的类进行测试的,否则是生成不了覆盖报告的。
- kotlin代码,可能存在运行问题,可以用最简单的项目(可以参考下面的测试样例代码结构)进行对比发现问题。
测试样例代码结构:
Src:
MainActivity:只有onCreate方法,并且xml只有一个textview显示。
ShowActivity:只有onCreate方法,并且xml只有一个LinearLayout布局。
androidtest:
MainActivityTest:只有一个Test如下
@Test
fun jump() {
val context: Context =
InstrumentationRegistry.getInstrumentation().targetContext //获取Context上下文
val intent = Intent(context, ShowActivity::class.java)
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
context.startActivity(intent)
}