声纳没有检查 Android 项目中的测试类

Posted

技术标签:

【中文标题】声纳没有检查 Android 项目中的测试类【英文标题】:Sonar not inspecting tests classes in Android project 【发布时间】:2018-02-15 21:51:26 【问题描述】:

我在我的 android 项目上配置了声纳,其中包含多种风格。声纳工作正常,只是它没有在我的应用程序中显示测试覆盖率。我像这样在我的 gradle 文件中设置声纳属性:

property "sonar.language", "java"
        property "sonar.sources", "src"
        property "sonar.test", "src/test, src/androidTest/java"
        property "sonar.binaries", "build"

        property "sonar.jacoco.reportPath", "build/jacoco/testDebugUnitTest.exec"
        property "sonar.java.coveragePlugin", "jacoco"
        property "sonar.junit.reportsPath", "build/test-results/Debug"
        property "sonar.android.lint.report", "build/outputs/lint-results.xml"

正如我所说,我有很多口味,在build/intermediates/classes 下,我有一个文件夹用于每种口味和测试文件夹。

注意:相同的配置在项目中工作,没有任何味道!

【问题讨论】:

【参考方案1】:

请添加这些属性:

sonarProperties 
property "sonar.host.url", "http://sonar.someserver.int"
property "sonar.jdbc.url", "jdbc:mysql://sonar.someserver.int:3306/sonar"
property "sonar.jdbc.driverClassName", "com.mysql.jdbc.Driver"
property "sonar.jdbc.username", "*****"
property "sonar.jdbc.password", "*****"

//I added these properties to my gradle.build
property "sonar.projectKey", "GradleAndroidTest"
property "sonar.projectName", "GradleAndroidTest"
property "sonar.projectVersion", "V1.0"
property "sonar.language", "java"
property "sonar.sources", "src"
property "sonar.binaries", "build"

并删除 sonar 插件并改用 sonar-runner 插件。

【讨论】:

声纳工作正常!它甚至涵盖了另一个不包含风味的项目中的单元测试!这段代码只有在我没有味道的情况下才能正常工作【参考方案2】:

问题出在二进制路径上。我必须指定具有特定风味的路径。就我而言:

sonarqube 
    //noinspection GroovyAssignabilityCheck
    properties 
//...
property "sonar.binaries", "build/intermediates/classes/qa/debug"
property "sonar.java.binaries", "build/intermediates/classes/qa/debug"
property "sonar.java.test.binaries", "build/intermediates/classes/qa/debug"
//...


其中 qa 是我的风格,而 debug 是构建配置。

【讨论】:

以上是关于声纳没有检查 Android 项目中的测试类的主要内容,如果未能解决你的问题,请参考以下文章

声纳 jacoco hybris

声纳不显示代码覆盖率

Android测试取决于库项目上的测试类

如何从android项目中的jacoco测试覆盖率报告中排除方法

Android Studio 没有正确导入 androidx 测试类

声纳失败,无法索引两次。请检查包含/排除模式是否为主文件和测试文件生成不相交的集合