Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将Sonar、Jacoco、Gradle、ScalaTest与Junit、Java集成_Java_Scala_Gradle_Jacoco_Sonarqube - Fatal编程技术网

将Sonar、Jacoco、Gradle、ScalaTest与Junit、Java集成

将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

我在构建过程中非常成功地集成了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-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的编译和测试。