1

我要解决的具体问题是集成测试没有出现在服务器上。

此外,此处给出的示例代码似乎是错误的: SonarQube: Analyzing Custom Source Sets

特别是这个代码示例:

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

运行此结果:

Invalid value of sonar.tests for... 

这实际上应该是什么?根据我正在阅读的另一个论坛,这应该是逗号分隔目录的列表。所以我尝试了:

sonarqube {
  properties {
    properties["sonar.tests"] += sourceSets.integrationTest
                                                 .allSource.srcDirs.join(",")
  }
}

...同样的错误。请注意,这ingegrationTest对我们的构建是正确的。

4

1 回答 1

2

以下代码有效:

sonarqube {

    properties {
        properties["sonar.tests"] += sourceSets.integrationTest.allSource.srcDirs.findAll({it.exists()})

        if (file("$project.buildDir/jacoco/test.exec").exists())
            property "sonar.jacoco.reportPath", "$project.buildDir/jacoco/test.exec"
        if (file("$project.buildDir/jacoco/integrationTest.exec").exists())
            property "sonar.jacoco.itReportPath", "$project.buildDir/jacoco/integrationTest.exec"
    }
}

我将它导入到每个需要它以避免使用子项目的项目中。根据 Gradle 文档,使用 subProjects 和/或 allProjects 会导致耦合,从而对并行性产生负面影响。IDK 如果导入更好,但我希望如此。

于 2016-05-11T19:41:00.383 回答