当前位置: 首页 > 知识库问答 >
问题:

用于集成测试的多模块maven jacoco设置

许兴文
2023-03-14
root module
  - domain module 
  - repository module 
  - service module 
  - controllers module

对于集成测试,它更棘手,我们使用failsafe和集成测试生成jacoco-it.exec文件,该文件由Sonar扫描。我的问题是,集成测试位于controllers module中,它只显示了对控制器内部的类的集成测试的测试覆盖范围,而不显示对另一个模块(如service module)中的类的集成测试的测试覆盖范围。因此,集成测试的总体测试覆盖率增加到21%,而不是35%+。

如果集成测试在controllers module中,那么是否可以配置sonar和jacoco来测量所有类的集成测试的测试覆盖率,而不是只测量来自同一模块的类的测试覆盖率?

这里是相关设置,供参考

<sonar.java.coveragePlugin>jacoco</sonar.java.coveragePlugin>
<sonar.dynamicAnalysis>reuseReports</sonar.dynamicAnalysis>
...
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.7.9</version>
<executions>
    <execution>
        <id>pre-unit-test</id>
        <goals>
            <goal>prepare-agent</goal>
        </goals>
        <configuration>
            <destFile>${project.build.directory}/jacoco.exec</destFile>
            <propertyName>surefireArgLine</propertyName>
        </configuration>
    </execution>

    <execution>
        <id>pre-integration-test</id>
        <phase>pre-integration-test</phase>
        <goals>
            <goal>prepare-agent</goal>
        </goals>
        <configuration>
            <destFile>${project.build.directory}/jacoco-it.exec</destFile>
            <propertyName>failsafeArgLine</propertyName>
        </configuration>
    </execution>
</executions>
</plugin>

我用mvn verify运行测试,用mvn sonar:sonar运行扫描器

共有1个答案

乐正浩宕
2023-03-14

您可以通过将覆盖范围报告全部写入同一个目标文件来聚合覆盖范围报告。

例如,我们目前只讨论多模块项目中的单元测试,因此我们的父pom包含:

<properties>
    ...
    <sonar.jacoco.reportPath>${project.basedir}/../target/jacoco.exec</sonar.jacoco.reportPath>
    ...
</properties>

而且

        <plugin>
            <groupId>org.jacoco</groupId>
            <artifactId>jacoco-maven-plugin</artifactId>
            <configuration>
                <destFile>${sonar.jacoco.reportPath}</destFile>
                <append>true</append>
            </configuration>
            <inherited>true</inherited>
            <executions>
                <execution>
                    <goals>
                        <goal>prepare-agent</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
 类似资料:
  • 我有一个多模块的弹簧引导项目。我想知道如何设置集成测试来测试Spring数据JPA存储库?以下方法失败,但有此异常:HV000183:无法加载'javax.el.ExpressionFactory'。检查是否在类路径上有EL依赖项。 由于该模块不依赖于web模块,因此没有可以启动的web应用程序。

  • 问题内容: 我正在使用dotnet测试对dotnet核心库进行单元测试。我像这样在我的詹金斯奴隶上进行测试。 测试报告如下所示。 我在詹金斯(Jenkins)工作DSL中使用一个块来尝试阅读报告。 詹金斯似乎看到了这份报告。 记录测试结果 但这不是解析结果并将其合并到报告中。我在Jenkins构建仪表板上看不到测试报告。 有任何想法吗? 问题答案: 您可以使用以下管道代码来运行和发布dotnet核

  • 如何模拟集成测试所需的许多依赖关系? 我使用Mockito进行纯单元测试。在这种情况下,Pure意味着测试一个类,嘲笑它的所有依赖关系。漂亮。 现在是集成测试。假设在这种情况下,集成测试将测试以下内容: 消息被放入队列 我们也可以说,在第2步中发生的处理是严肃的事情。它依赖于大量的数据库交互、多种外部服务、文件系统,以及各种各样的东西。流还会引发很多副作用,所以我不能简单地确保响应是正确的——我需

  • 我有一个多模块的maven项目 我有maven surefire插件设置,用于执行单元测试“*测试。“核心api”模块中包含java。 我们在一个单独的“集成测试”模块中进行了缓慢的长时间运行的集成测试。我们使用“*测试。java也用于我们的integ测试。 我们需要能够编译所有源代码,但希望排除“intg-test”作为默认maven“test”阶段的一部分运行。我们计划使用配置文件来启用“in

  • 在一个Gradle多模块项目中,在它自己的模块中有bootstrapping,我无法使用MockMvc,因为它需要引用bootstrapping-module。我不确定我是否配置错误了什么。基本结构为: 模块:包含一些REST服务的模块,需要依赖于starter的testImplementation-Dependency starter:bootstrapping-module,用于应用sprin

  • 我有一个Flink作业,我正在使用这里描述的方法进行集成测试:https://ci.apache.org/projects/flink/flink-docs-stable/dev/stream/testing.html#integration-testing 作业从两个源获取输入,这两个源组合在一个中。在测试环境中,我目前使用两个简单的SourceFunction来发出值,但是这不提供对事件发出顺