我是声纳和jacoco的新手,我无法找到问题的答案
我们将使用声纳和jacoco来分析我们的测试覆盖率。
我们将进行三种测试:单元测试,集成测试(使用弹簧启动测试)和验证测试,我们将在真实应用实例上运行。我们想合并测试结果。为单元和集成测试生成jacoco文件不是问题,因为他们可以访问源代码。我们可以在声纳中合并这些报告。
我的问题是,是否可以生成jacoco文件以进行与实际应用程序交互的验收测试?也许你会有一个如何做到这一点的链接?
我现在最好的想法是在实际应用程序和嵌入式应用程序上运行两次验收测试,并从嵌入式获取报告。但也许有更好的解决方案。 谢谢,
答案 0 :(得分:5)
JaCoCo能够记录任何类型的Java应用程序执行 - 您只需要使用agent启动此应用程序,例如:
java -javaagent:jacoco-0.8.0/lib/jacocoagent.jar -cp classes Main
默认情况下,在应用程序终止时,这将生成带有执行数据的文件jacoco.exec
。还有ways to get execution data from running application。
在各种情况下,互联网上有很多使用代理的例子 - Spring Boot,Tomcat,Weblogic等。
之后,可以使用此执行数据jacoco.exec
和 exactly the same class files that were used at runtime 生成报告,以生成执行数据。例如,使用JaCoCo command line interface(还有Ant tasks,Gradle plugin,Maven plugin):
java -jar jacoco-0.8.0/lib/jacococli.jar \
report \
jacoco.exec \
--classfiles classes \
--html report
可以在没有源文件的情况下生成报告,但在这种情况下,您将无法向下钻取低于方法级别的粒度:
使用源文件报告:
jacoco-0.8.0/lib/jacococli.jar \
report \
jacoco.exec \
--classfiles classes \
--html report \
--sourcefiles src
现在关于SonarQube:它执行exec
和类文件的分析,因此要求类文件与运行时使用的类文件相同,以生成exec
文件。因此,您需要保证对SonarQube分析执行与测试中完全相同的类文件。