将Sonar、Jacoco、Gradle、ScalaTest与Junit、Java集成
我在构建过程中非常成功地集成了Gradle(1.11)、Sonar(4.1.1)、Java、Scala和Jacoco。我甚至设法获得了关于成功测试数量的信息(多亏了Stackoverflow!)。不过我有一个问题 我似乎无法获得有关每次测试覆盖率的信息。这将是非常好的有这个信息将Sonar、Jacoco、Gradle、ScalaTest与Junit、Java集成,java,scala,gradle,jacoco,sonarqube,Java,Scala,Gradle,Jacoco,Sonarqube,我在构建过程中非常成功地集成了Gradle(1.11)、Sonar(4.1.1)、Java、Scala和Jacoco。我甚至设法获得了关于成功测试数量的信息(多亏了Stackoverflow!)。不过我有一个问题 我似乎无法获得有关每次测试覆盖率的信息。这将是非常好的有这个信息 > 15:11:16.514 INFO - Sensor JaCoCoSensor... 15:11:16.535 INFO - > Analysing C:\example\gradle-sonar-jac
> 15:11:16.514 INFO - Sensor JaCoCoSensor... 15:11:16.535 INFO -
> Analysing C:\example\gradle-sonar-jacoco-scala\build\jacoco\test.exec
> 15:11:17.887 INFO - No information about coverage per test.
该项目的简化版本位于:
干杯 看起来你已经有了
apply plugin: 'jacoco'
以你的身材
jacoco {
destinationFile = file("$buildDir/jacoco/test.exec")
}
但是我没有看到在gradle.build中从何处获取文件的定义
jacoco {
destinationFile = file("$buildDir/jacoco/test.exec")
}
如果您计划进行集成和单元测试,它将类似于以下内容:
task "integtest"(type: Test, dependsOn: integtestClasses) {
testClassesDir = sourceSets.integtest.output.classesDir
classpath = sourceSets.integtest.runtimeClasspath
jacoco {
destinationFile = file("$buildDir/jacoco/integTest.exec")
}
}
test {
jacoco {
destinationFile = file("$buildDir/jacoco/test.exec")
}
}
带有相应的声纳配置项
property "sonar.jacoco.reportPath", "$buildDir/jacoco/test.exec"
property "sonar.jacoco.itReportPath", "$buildDir/jacoco/integTest.exec"
我从以下位置看到了另一个conf参数: 参数
sonar.java.coveragePlugin=jacoco
引起了我的注意。您试过了吗?您可能也想使用
它非常便宜:仅4.99美元/月。而且,您可以在Github上与拉取请求进行深度集成(跟踪分支增加或减少代码覆盖率的时间),并深入了解代码覆盖率
和集成都可用。非常感谢您的回复,但这并不能解决我的问题:1)目前我没有任何集成测试,只有单元测试;2) Jacoco工作正常,代码覆盖范围显示在Sonar Web界面中;问题是我看不到“每个测试的覆盖率”。。因此,如果我有一个名为test1()的测试和一个名为test2()的测试,我希望看到test1()覆盖了10%的代码,test2()覆盖了30%的代码,例如,根据我在github中看到的代码,您告诉sonar查看jacoco文件,而不指定jacoco将.exec放在哪里。这就是设置目标文件的作用所在。sonar somohow确实知道jacoco文件的位置:请参阅原始帖子:“分析C:\example\gradle sonar jacoco scala\build\jacoco\test.exec”;所以jacoco文件的位置似乎不是问题,但我会再次检查;这是因为你已经在底部定义了它和你的声纳配置的其余部分。属性“sonar.jacoco.reportPath”、“$buildDir/jacoco/test.exec”我将再次检查,但正如我之前所说,sonar确实能够查看和处理jacoco文件;你确定声纳中有这样的功能吗?你能给我看些指针吗?我也在评估sonar+maven,但没有比观察整个代码覆盖率更进一步。哦,我找到了!如果你没有这个问题,我甚至不知道这个功能:)所以,谢谢你!您的github示例是测试java代码的scala代码。您是否使用scala测试scala或java测试java测试了覆盖率报告?我这样问是因为我让gradle构建了一些scala项目,它总是分别显示scala和java的编译和测试。