h.u*_*une 65 android code-coverage gradle android-studio
我正在使用Android Studio开发应用程序.
我能够运行测试代码.
但是,我不知道如何在android studio中获得代码覆盖率.
我已经看到以下链接.
Android Gradle Code Coverage
但我迫不及待地想要更新到支持emma的v0.6.
项目配置如下.
主要代码
MyProject/AppName/src/main/java/mypackage/MyClass.java
测试代码
MyProject的/ AppName的/ src目录/ instrumentTest/JAVA/mypackage的/测试/ MyClassTest.java
项目配置
MyProject的
├─build.gradle
└─AppName
├─build.gradle
└─src
├─main
│├─java
││└─mypackage
││└─MyClass.java
│├─res
│└─AndroidManifest.xml
└─ instrumentTest
└─java
└─mypackage
└─test
└─MyClassTest.java
Cal*_*leb 59
使用新的Android Studio 1.2,您可以运行单元测试并查看IDE中的所有内容.
首先,您需要在IDE中运行单元测试.(如果你已经可以,那么跳过这一步)
其次,您需要创建JUnit Run配置

在这个配置中,你将能够选择
如果您在创建JUnit运行配置时遇到任何问题,请访问本指南以获取帮助.
最后,在最新的Android Studio中,您应该能够通过单击"Run with Coverage"按钮来运行JUnit-Run配置.
在Android Studio中2.1.3 IS标签Run Unit tests with Coverage哪里Unit test是在下面的截图显示您的测试配置的名称:
xfd*_*dai 30
有很多答案显示如何将jacoco插件应用到Android工作室项目,这已经过时,并且浪费了我很多时间来找出最近Android工作室的解决方案(我的Android Studio是版本2.1.2).
Jacoco 插件内置于Android Studio gradle中,您需要做的就是启用它,如下所示:
buildTypes {
...
debug {
testCoverageEnabled true
}
}
完成上述操作后,运行单元测试任务
./gradlew testDebugUnitTest
然后创建覆盖文件:
./gradlew createDebugCoverageReport
覆盖文件将在<module>/build/reports/coverage/debug文件夹下创建,包含index.html,您可以使用浏览器打开它report.xml,您可以使用它来获取报告jenkins jacoco plugin或其他继续集成工具.
对于那些获得0%覆盖率的人jenkins jacoco plugin,请务必使用正确的版本.从他们的网站引用:
不幸的是,JaCoCo 0.7.5破坏了与jacoco.exec文件以前的二进制格式的兼容性.JaCoCo插件版本1.0.19基于JaCoCo 0.7.4,因此您不能将此版本用于已使用JaCoCo 0.7.5或更新版本的项目.从版本2.0.0开始的JaCoCo插件使用JaCoCo 0.7.5,因此也需要在您的项目中使用此版本.如果你仍然使用JaCoCo 0.7.4或更低,请坚持使用JaCoCo插件1.0.19或更低版本
如果您想获得测试覆盖率(对于仪器测试 - 当未启用“运行具有覆盖率的应用程序”时):
将其放入您的顶层build.gradle:
buildscript{
ext.jacocoVersion = '0.8.2'
...
dependencies {
classpath "org.jacoco:org.jacoco.core:$jacocoVersion"
}
}
Run Code Online (Sandbox Code Playgroud)
进入您的应用程序级别build.gradle:
...
apply plugin: 'jacoco'
jacoco {
toolVersion = "$jacocoVersion"
}
tasks.withType(Test) {
jacoco.includeNoLocationClasses = true
}
task jacocoTestReport(type: JacocoReport, dependsOn: ['testDebugUnitTest', 'createDebugCoverageReport']) {
reports {
xml.enabled = true
html.enabled = true
}
def fileFilter = [
'**/R.class', '**/R$*.class', '**/BuildConfig.*', '**/Manifest*.*', '**/*Test*.*', 'android/**/*.*', '**/*$[0-9].*'
]
def debugTree = fileTree(dir: "$project.buildDir/tmp/kotlin-classes/debug", excludes: fileFilter)
def mainSrc = "$project.projectDir/src/main/kotlin"
sourceDirectories = files([mainSrc])
classDirectories = files([debugTree])
executionData = fileTree(dir: project.buildDir, includes: [
'jacoco/testDebugUnitTest.exec', 'outputs/code_coverage/debugAndroidTest/connected/**/*.ec'
])
}
android {
...
buildTypes {
debug {
testCoverageEnabled true
}
}
Run Code Online (Sandbox Code Playgroud)
然后你应该编写你的测试,并且测试必须通过。如果您确定测试已通过,请将该代码写入终端:
gradlew connectedCheck
Run Code Online (Sandbox Code Playgroud)
它将运行您的测试。如果一切正确,您应该在应用程序 -> 构建 -> 报告 -> 覆盖率中获得一个报告文件。您必须打开该index.html文件。(右键单击文件 -> 在浏览器中打开 -> 选择浏览器)
它正在我的项目中工作。也许有更好、更简单的解决方案。如果我忘了在这里写什么,请写评论。
| 归档时间: |
|
| 查看次数: |
53896 次 |
| 最近记录: |