我正在使用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
我最近开始android-gradle-plugin在我的一个项目中集成1.1.0.该项目用于robolectric 2.4运行单元测试.
这是一个具有非常复杂依赖关系的多模块项目(某些模块依赖于其他模块).像这样的东西:
--> application-module (dependsOn: module1, module2, module-core)
--> module1 (dependsOn: module-core)
--> module2 (dependsOn: module-core)
--> module-core (dependsOn: module3, module4)
--> module3 (library dependencies)
--> module4 (library dependencies)
Run Code Online (Sandbox Code Playgroud)
有关更清晰的图片,请参阅jacoco-example项目.
我试图集成JaCoCo来生成单元测试的报告,但在我看来,它只运行androidTests基本上是仪器测试.
经过一些谷歌搜索后,我遇到了一些关于GitHub和其他文章的项目,但他们主要关注的是以前的版本,android-gradle-plugin或者正在使用其他第三方插件android-unit-test ,例如这里.
可能是我失去了谷歌的能力.但有人能指出我可以找到一些关于android gradle插件中的新内容以及如何仅针对单元测试运行jacoco任务的文档吗?
UPDATE
采用了nenick的例子中的脚本:
apply plugin: "jacoco"
configurations {
jacocoReport
}
task jacocoReport(dependsOn: 'testDebug') << {
ant {
taskdef(name:'jacocoreport',
classname: 'org.jacoco.ant.ReportTask',
classpath: configurations.jacocoReport.asPath)
mkdir dir: "${buildDir}/test-coverage-report"
mkdir dir: "${buildDir}/reports/jacoco/test/"
jacocoreport …Run Code Online (Sandbox Code Playgroud) 我一直试图在一段时间内安静地进行Jacoco测试覆盖.我在这些主题中尝试了几种可能的解决方案:
使用JaCoCo Gradle插件的Android测试代码覆盖率
如何使用Android gradle插件0.10.0或更高版本获取jacoco覆盖率报告?
我正在使用genymotion在一个emulatated设备中运行测试.这是我添加到build.gradle的内容:
apply plugin: 'jacoco'
android{
jacoco {
version "0.7.1.201405082137"
}
buildTypes{
debug{
testCoverageEnabled = true
}
}
}
jacoco {
toolVersion "0.7.1.201405082137"
}
Run Code Online (Sandbox Code Playgroud)
要运行它,我会使用类似的东西
./gradlew clean
./gradlew createFLAVOR_NAMEDebugCoverageReport
Run Code Online (Sandbox Code Playgroud)
相关生成的文件/文件夹是:
/build/intermediates/coverage-instrumented-classes
/build/intermediates/jacoco
/build/outputs/code-coverage/connected/flavors/MyFlavor/coverage.ec
Run Code Online (Sandbox Code Playgroud)
但是,@ build/reports/jacoco/test/html/index.html或任何html页面/代码覆盖率报告@/build/outputs都没有.
我还尝试创建一个专门的任务来构建一个覆盖率报告:
def coverageSourceDirs = [
'src/main/java',
]
task jacocoTestReport(type: JacocoReport, dependsOn: "connectedAndroidTestFLAVOR_NAMEDebug") {
group = "Reporting"
description = "Generate Jacoco coverage reports after running tests."
reports {
xml.enabled = true
html.enabled = true
}
classDirectories = fileTree(
dir: './build/intermediates/classes/debug',
excludes: ['**/R*.class', …Run Code Online (Sandbox Code Playgroud) 我已经为iOS编写了测试用例,我们有
XcodeCoverage
找出代码覆盖率.现在,我希望为我的android测试用例做同样的事情.有没有与Android Studio兼容的工具?
任何建议/参考链接都会有所帮助.