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

Jacoco代理不测量任何代码覆盖率

曹君墨
2023-03-14

在maven构建过程中,我使用过程-exec-maven-plugin启动我的应用程序,并使用故障安全运行集成测试。现在我想从测试中的应用程序获取覆盖数据。

问题是,覆盖率报告包含我的应用程序的所有类,但没有覆盖率数据(全部为0%)。当我将jacoco代理附加到failsafe插件时,它会生成测试类的代码覆盖率,这并没有真正的帮助。

有什么想法吗?

process exec maven插件配置:

    <plugin>
        <groupId>com.bazaarvoice.maven.plugins</groupId>
        <artifactId>process-exec-maven-plugin</artifactId>
        <executions>
            <execution>
                <id>start-importer</id>
                <phase>pre-integration-test</phase>
                <goals>
                    <goal>start</goal>
                </goals>
                <configuration>
                    <name>product-importer</name>
                    <waitForInterrupt>false</waitForInterrupt>
                    <healthcheckUrl>http://localhost:${jetty.http.port}/health</healthcheckUrl>
                    <arguments>
                        <argument>${java.home}/../bin/java</argument>
                        <argument>${failsafe.argLine}</argument>
                        <argument>-jar</argument>
                        <argument>
                            ${project.build.directory}/jars/app-${project.version}-shaded.jar
                        </argument>
                    </arguments>
                </configuration>
            </execution>
            <!--Stop all processes in reverse order-->
            <execution>
                <id>stop-all</id>
                <phase>post-integration-test</phase>
                <goals>
                    <goal>stop-all</goal>
                </goals>
            </execution>
        </executions>
    </plugin>

使用以下Jacoco配置:

<plugin>
    <groupId>org.jacoco</groupId>
    <artifactId>jacoco-maven-plugin</artifactId>
    <executions>
        <execution>
            <id>prepare-jacoco-service-test-agent</id>
            <!-- default pre-integration is to late for the process-exec-maven-plugin -->
            <phase>package</phase>
            <goals>
                <goal>prepare-agent-integration</goal>
            </goals>
            <configuration>
                <propertyName>failsafe.argLine</propertyName>
                <includes>
                    <include>de.myapp.*</include>
                </includes>
                <classDumpDir>${project.build.outputDirectory}</classDumpDir>
                <destFile>${project.build.directory}/coverage-reports/jacoco-it.exec</destFile>
                <append>true</append>
            </configuration>
        </execution>

        <execution>
            <id>report-jacoco-service-test-results</id>
            <goals>
                <goal>report-integration</goal>
            </goals>
            <phase>verify</phase>
            <configuration>
                <dataFile>${project.build.directory}/coverage-reports/jacoco-it.exec</dataFile>
                <outputDirectory>${project.build.directory}/coverage-reports/out/</outputDirectory>
            </configuration>
        </execution>

    </executions>
</plugin>

共有1个答案

苏硕
2023-03-14

在我的例子中,问题是服务器以“HW断电”的方式与docker容器一起消失了——没有像SIGTERM这样的信号,它取决于JaCoCo的输出(在docker容器中运行的JVM的末端)。

当我添加docker在docker容器内运行的命令“Kilall java”,并在容器关闭前稍作停顿时,exec文件就可以了。

 类似资料:
  • 我的代码运行在具有单独JVM的单独虚拟机上。我想在此虚拟机上以tcpserver模式设置JaCoCo代理以收集覆盖率数据。然后,我将在我的maven项目中以tcpclient模式设置JaCoCo代理,以连接到上面提到的VM并获取覆盖率数据。 问题是代理不收集任何覆盖数据。在中创建了覆盖率数据文件,但该文件为空。 下面是代理选项:-Java agent:/usr/xx/plugins/org . j

  • 我在声纳中的代码覆盖率显示为0%,这不是真的,因为我有单元测试。 格拉德尔 当我打开inside然后我可以看到成功的单元测试。 我在Jenkins环境中运行作为

  • 我执行Jacoco单元测试代码覆盖,它显示了单元测试中需要覆盖的所有代码。 如何避免测试覆盖显示ui代码,比如onCreate()、onAttach()中的代码(fragment)。我不想要视图的代码覆盖率,但jacoco也给出了这一点。我有办法消除它吗?

  • 我有一个在Wildfly 9服务器上运行的Java Web应用程序,我使用jmeter-maven插件在我的应用程序的运行实例上运行一些性能测试。这些测试对应用程序的服务运行简单的 REST 请求。 我想做的是检索性能测试的代码覆盖率统计数据,这样我就可以知道我的性能测试的代码覆盖率。 在此之后,我在服务器上设置了JaCoCoJava代理。这是启动时的代理配置 此外,我在测试Maven项目上配置了

  • 我正在将ANT构建转换为Maven。我不用声纳。 在Maven中,Jacoco似乎并没有报告单元测试本身的覆盖率,而ANT报告。我也一直在尝试为我的Maven build获得这个,但是我没有找到任何东西。 似乎我应该添加一个

  • 我正在做一个大学项目,我需要覆盖当地法规,看看我的测试是否做得好。然而,netbeans控制台保持 --- jaco-maven-plugin:0.7.7.201606060606:报告(报告) @ 客户端服务提供器---由于缺少执行数据文件而跳过 JaCoCo 执行。 这是我的pom.xml