spring-boot - 通过在实际应用程序上运行验收测试来获取 jacoco 报告

标签 spring-boot testing sonarqube jacoco acceptance-testing

我是 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 tasksGradle pluginMaven plugin ):

java -jar jacoco-0.8.0/lib/jacococli.jar \
    report \
    jacoco.exec \
    --classfiles classes \
    --html report

无需源文件即可生成报告,但在这种情况下,您将无法向下钻取低于方法级别的粒度:

report

report for class without sources

带有源文件的报告:

jacoco-0.8.0/lib/jacococli.jar \
  report \
  jacoco.exec \
  --classfiles classes \
  --html report \
  --sourcefiles src

report for class with sources

report for source file

现在介绍一下 SonarQube:它对 exec 和类文件进行分析,因此还要求类文件与运行时使用的文件相同以生成 执行文件。因此,您需要保证对与测试中完全相同的类文件执行 SonarQube 分析。

关于spring-boot - 通过在实际应用程序上运行验收测试来获取 jacoco 报告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56256684/

相关文章:

c++ - Sonarqube 文件级别的手动测量

java - 使用 Sonarqube 扫描源代码后,自定义规则不会产生任何问题

unit-testing - 您会为 J2ME 推荐哪些单元测试框架?

mysql - sonarqube 5.6 api 用于删除 mysql 数据库工件条目并清理所有关联表

spring-boot - Spring Reactive kafka Receiver 总是将引导服务器覆盖到本地主机

java - Thymeleaf 到 madal jquery

java - 如何通过Spring-Feign获取InputStream?

java - 配置嵌入式 MongoDB 的最简单方法

wcf - 无法获取 WCF 测试客户端来测试 WCF 服务库

java - 使用 Gradle 类作为应用程序代码?