Sonar跳过集成测试

时间:2016-08-01 14:10:57

标签: java gradle sonarqube jacoco sonarqube-scan

我需要使用Gradle通过Sonar分析代码,我有一些我无法处理的奇怪问题。我有以下项目结构

-java
  |-src
    |-main
    |-test
    |-integration-test

如果我将sonar.test属性更改为/ src / integration-test,Sonar默认只分析测试目录和integration-test目录,但我想分析这两个目录,实际上我不知道该怎么做。下面我们有来自gradle.build文件的sonarqube任务属性。

sonarqube {
    properties {
        property "sonar.projectName", "projectName"
        property "sonar.projectKey", "org.sonarqube:projectName"
        property "sonar.host.url", "http://sonar.doesntmetter"
        property "sonar.java.coveragePlugin", "jacoco"
        property "sonar.junit.reportsPath", "build/test-results/test"
        property "sonar.jacoco.reportPath", "build/jacoco/test.exec"
        property "sonar.jacoco.itReportPath", "build/jacoco/integrationTest.exec"
    property "sonar.login", "admin"
    property "sonar.password", "admin"
    }
}

我注意到,当我运行gradle构建时,/ build / jacoco /目录中会有integrationTest.exec和test.exec,但是如果我使用默认的sonar.test属性运行gradle sonarqube,则只会进行测试。 exec,另一方面,当我用sonar.test = / src / integration-test运行gradle sonarqube时,会有test.exec和integrationTest.exec。

您不知道如何在一次运行中分析单元和集成测试吗?

1 个答案:

答案 0 :(得分:0)

我认为你可以将它添加到你的Gradle:

sonarqube {
    properties {
        properties["sonar.sources"] += sourceSets.custom.allSource.srcDirs
        properties["sonar.tests"] += sourceSets.integTest.allSource.srcDirs
    }
}

只需使用+=添加更多测试/来源。 更多信息和示例是here

编辑:

也添加报告路径!属性命名为:

sonar.surefire.reportsPath - test.testResultsDir(如果目录存在)

sonar.junit.reportsPath - test.testResultsDir(如果目录存在)

编辑:

我重写你的代码并在一行中设置测试源,用你的结构检查

sonarqube {
    properties {
        property "sonar.projectName", "projectName"
        property "sonar.projectKey", "projectKey"
        property "sonar.host.url", "http://itsprettyprivate"
        property "sonar.java.coveragePlugin", "jacoco"
        // Or add it via += to properties, it is up to you ;)
        property "sonar.sources", "src/java,src/test,src/integration-test"
        //Tells SonarQube where the unit tests execution reports are
        property "sonar.junit.reportsPath", "build/test-results/test"
        //Tells SonarQube where the unit tests code coverage report is
        property "sonar.jacoco.reportPath", "build/jacoco/test.exec"
        //Tells SonarQube where the integration tests code coverage report is
        property "sonar.jacoco.itReportPath", "build/jacoco/integrationTest.exec"
        property "sonar.login", "admin"
        property "sonar.password", "password"
    }
}