我是 Sonar 和 jacoco 的新手,我无法找到以下问题的答案
我们将使用 Sonar 和 jacoco 来分析我们的测试覆盖率。
我们将进行三种测试:单元测试、集成测试(使用 Spring Boot 测试)和验收测试,我们将在真实的应用程序实例上运行。我们想要合并测试结果。生成用于单元和集成测试的 jacoco 文件不是问题,因为它们可以访问源代码。我们可以将这些报告合并到 Sonar 中。
我的问题是否可以生成 jacoco 文件用于与实际应用程序交互的验收测试?也许您会有一个如何操作的链接?
我现在最好的想法是在实际应用程序和嵌入式应用程序上运行两次验收测试,并从嵌入式应用程序获取报告。但也许有更好的解决方案。 谢谢,
最佳答案
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
和类文件进行分析,因此还要求类文件与运行时使用的文件相同以生成 执行
文件。因此,您需要保证对与测试中完全相同的类文件执行 SonarQube 分析。
关于spring-boot - 通过在实际应用程序上运行验收测试来获取 jacoco 报告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56256684/