我正在使用Android Studio开发应用程序 我能够运行测试代码 但是,我不知道如何在android studio中获得代码覆盖率。
我已经看过以下链接。
Android Gradle Code Coverage
但我迫不及待地等待更新到支持emma的v0.6。
项目配置如下。
主要代码
MyProject的/ AppName的/ SRC /主/爪哇/ 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
答案 0 :(得分:59)
使用新的Android Studio 1.2,您可以运行单元测试并查看IDE中的所有内容。
首先,您需要在IDE中运行您的单元测试。 (如果你已经可以,那么跳过这一步)
其次,您需要创建JUnit运行配置
在此配置中,您可以选择
如果您在创建JUnit运行配置时遇到任何问题,请访问this指南以获取帮助。
最后,在最新的Android Studio中,您应该可以通过点击' Run with Coverage'来运行您的JUnit-Run配置。按钮。
在Android Studio 2.1.3中,标签为Run Unit tests with Coverage
,其中Unit test
是测试配置的名称,如以下屏幕截图所示:
答案 1 :(得分:25)
有很多答案显示如何将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
来获取报告{ {1}}或其他继续集成工具。
对于jenkins jacoco plugin
0%覆盖率的用户,请务必使用正确的版本。
引自their site:
不幸的是,JaCoCo 0.7.5破坏了与之前二进制文件的兼容性 jacoco.exec文件的格式。 JaCoCo插件最新版本 1.0.19基于JaCoCo 0.7.4,因此您不能将此版本用于已使用JaCoCo 0.7.5或更新版本的项目。 JaCoCo插件 从版本2.0.0开始使用JaCoCo 0.7.5,因此也需要 这个版本将在您的项目中使用。请坚持JaCoCo 如果你仍然使用JaCoCo 0.7.4或更低版本,插件1.0.19或更低
答案 2 :(得分:2)
您是否尝试过使用Jacoco插件获取项目的代码覆盖率?这是一个很好的插件,可以根据您的套餐或个别课程为您提供保险。因为我使用Maven,我不确定你如何配置Jacoco与Gradle一起使用。 Check the link:看看它是否有帮助
答案 3 :(得分:2)
我们使用maven构建我们的应用程序和cobertura进行代码覆盖率报告
两者都非常容易整合
android maven整合:
http://www.vogella.com/tutorials/AndroidBuildMaven/article.html
Maven + Cobertura代码覆盖范例:
http://www.mkyong.com/qa/maven-cobertura-code-coverage-example/
答案 4 :(得分:2)
我认为您无法在Android Studio中看到可视代码覆盖率报告。但你可以试试Jacoco
。您需要将其集成到build.gradle
文件中。您可以找到similar question & solution here
答案 5 :(得分:2)
Android studio gradle内置Jacoco插件,您可以使用它来查找代码覆盖率。我已经写了一篇文章来逐步配置jaococo来查找Espresso测试用例的代码覆盖率,但你也可以将它用于Robotium。看看这个。
http://qaautomated.blogspot.in/2016/03/how-to-find-code-coverage-with-jacoco.html
答案 6 :(得分:1)
如果您想获得测试覆盖率(对于仪器测试-未启用“使用覆盖率运行应用程序”):
将其放入您的顶级build.gradle
:
buildscript{
ext.jacocoVersion = '0.8.2'
...
dependencies {
classpath "org.jacoco:org.jacoco.core:$jacocoVersion"
}
}
进入您的应用级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
}
}
然后,您应该编写测试,并且测试必须通过。如果您确定测试通过了,请将该代码写入终端:
gradlew connectedCheck
它将运行您的测试。
如果您做对了所有事情,您应该在
应用->构建->报告->覆盖率。
您必须打开index.html
文件。 (右键单击文件->在浏览器中打开->选择浏览器)
它正在我的项目中工作。也许有更好更好的解决方案。 如果我忘记了要在此处写下的内容,请写评论。
答案 7 :(得分:0)
在模块build.gradle
文件中启用testCoverage
buildTypes {
debug {
testCoverageEnabled true
}
}
然后
右键单击测试-> Java包,然后选择Run Tests in Java with Coverage
以运行所有具有代码覆盖率的测试,或者右键单击特定的测试类,然后单击Run SampleTest with Coverage
答案 8 :(得分:0)
您可以右键单击您感兴趣的软件包,然后选择Run 'Tests in "package" with coverage'