我想在我的Android项目中设置sonarqube报告。我目前在显示声纳UI中的所有测试类时遇到了问题,覆盖率以百分比显示,目前只有app/src/test/
的单元测试显示为单元测试。sonarqube与androidTest和测试covarage
我的项目有一个测试文件夹app/src/test/
其中包含单元测试,我有一个androidTest文件夹app/src/androidTest/
其中包含Android单元,集成和UI测试。当我通过gradle运行所有测试时,android-gradle插件生成build/jacoco/testDebugUnitTest.exec
和build/test-results/debug/TEST-*Test.xml
,其中包含测试文件夹中单元测试的jacoco结果和覆盖率报告。另外android-gradle插件生成build/outputs/code-coverage/connected/coverage.ec
和build/outputs/androidTest-results/connected/TEST-*Test.xml
包含来自androidTest文件夹的结果和覆盖率报告
在我的build.gradle中,我可以指定声纳插件的属性。
sonarqube {
properties {
property "sonar.sources", "src/main/java,src/main/res"
property "sonar.tests", "src/test/java,src/androidTest/java"
property "sonar.java.coveragePlugin", "jacoco"
property "sonar.jacoco.reportPath", "${project.buildDir}/jacoco/testDebugUnitTest.exec"
property 'sonar.jacoco.itReportPath', "${project.buildDir}/outputs/code-coverage/connected/coverage.ec"
property "sonar.junit.reportsPath", "${project.buildDir}/test-results/debug" // path to junit reports
}
}
随着sonar.junit.reportsPath
我可以指定XML报告发送到sonarqube服务器。当我将其更改为build/outputs/androidTest-results/connected
时,仪表板上显示为单元测试的androidTest。有没有办法让sonar插件在两个目录中查找或合并结果?
虽然这可能会在SonarQube测试列表中添加UI测试,但它不会增加覆盖率或指示方法被覆盖。任何解决方案? – Elias
@Elias如果您正在使用Jacoco进行仪器和代码覆盖,那么您已经设置好了,因为更新版本的Sonarqube会合并来自单元和仪器测试的Jacoco覆盖数据。然而,我不知道这是可能的其他覆盖插件。 –
我们在SonarQube v6上,我想这是最新的?我通过这些属性: 财产 “sonar.java.coveragePlugin”, “jacoco” 财产 “sonar.jacoco.reportPath”, “构建/ jacoco/testProductionMinSdk19DebugUnitTest.exec” // JUnit的覆盖率报告 财产“sonar.junit。 reportsPath“,”build/test-results/productionMinSdk19Debug /“//路径为junit报告 属性”sonar.android.lint.report“,”/build/outputs/lint-results-productionMinSdk19Debug.xml“//路径为lint报告 – Elias