为什么 Jacoco 的集成测试覆盖率为 0%

时间:2021-07-04 03:55:30

标签: spring-boot maven-3 code-coverage jacoco-maven-plugin maven-failsafe-plugin

我已经设置了 Maven 项目,以便在我的 it 配置文件中获取集成测试覆盖率。但是 jacoco 报告显示所有类的值为 0%。

我在配置文件和故障安全插件中的主要 POM Jacoco 集成设置部分:

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-failsafe-plugin</artifactId>
                <version>${maven-failsafe-plugin.version}</version>
                <executions>
                    <!--
                        Invokes both the integration-test and the verify goals of the
                        Failsafe Maven plugin
                    -->
                    <execution>
                        <id>integration-tests</id>
                        <goals>
                            <goal>integration-test</goal>
                            <goal>verify</goal>
                        </goals>
                        <configuration>
                            <!--
                                Skips integration tests if the value of skip.it.tests
                                property is true
                            -->
                            <argLine>@{failsafeArgLine}</argLine>
                            <skipTests>${skip.it.tests}</skipTests>

                            <testFailureIgnore>true</testFailureIgnore>
                            <excludes>
                                <exclude>none</exclude>
                            </excludes>
                            <includes>
                                <!-- Include your Cucumber tests, as an example -->
                                <include>**/*CucumberTests.java</include>
                                <include>**/*IT.java</include>
                            </includes>

                            <systemPropertyVariables>
                                <it.server.port>${random.http.port}</it.server.port>
                                <it.jmx.port>${random.jmx.port}</it.jmx.port>
                            </systemPropertyVariables>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
       </plugins>
    </pluginManagement>

.....
<profiles>
     <profile>
            <id>it</id>
            <activation>
                <activeByDefault>false</activeByDefault>
            </activation>
            <properties>
                <packaging.type>jar</packaging.type>
                <run.profiles>it</run.profiles>
                <skip.it.tests>true</skip.it.tests>
                <skipTests>true</skipTests>
            </properties>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.jacoco</groupId>
                        <artifactId>jacoco-maven-plugin</artifactId>
                        <configuration>
                            <append>true</append>
                            <!-- Sets the path to the file which contains the execution data. ;-->
                            <destFile>${user.dir}/target/jacoco-it.exec</destFile>
                            <!-- Sets the path to the file which contains the execution data.-->
                            <dataFile>${user.dir}/target/jacoco-it.exec</dataFile>
                            <!--  Sets the name of the property containing the settings for JaCoCo runtime agent.-->
                            <propertyName>failsafeArgLine</propertyName>
                            <excludes>
                                <exclude>**/*App*</exclude>
                                <exclude>**/test/**/*</exclude>
                                <exclude>**/it/**/*</exclude>
                                <exclude>**/config/*Config*</exclude>
                            </excludes>
                            <!--  Sets the output directory for the code coverage report.-->
                            <outputDirectory>${user.dir}/target/coverage-reports/jacoco-it</outputDirectory>
                        </configuration>
                        <executions>
                            <execution>
                                <id>pre-integration-test</id>
                                <phase>pre-integration-test</phase>
                                <goals>
                                    <goal>prepare-agent</goal>
                                </goals>
                            </execution>
                            <!--
                                Ensures that the code coverage report for integration tests after
                                integration tests have been run.
                            -->
                            <execution>
                                <id>post-integration-test</id>
                                <phase>post-integration-test</phase>
                                <goals>
                                    <goal>report</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>

执行命令的 api 测试模块 POM 的配置文件设置

<profile>
    <id>it</id>
    <properties>
        <skip.it.tests>false</skip.it.tests>
        <spring.profile>it</spring.profile>
        <skipTests>true</skipTests>  -- This is for unit tests
    </properties>
</profile>

但是我可以看到 jacoco-it.exec 文件已经生成,报告文件如下。

enter image description here

版本:

<jacoco.plugin.version>0.8.3</jacoco.plugin.version>
<maven-failsafe-plugin.version>3.0.0-M5</maven-failsafe-plugin.version>

执行测试的命令:mvn clean verify -P it。这将启动服务器并在那里运行所有集成测试(api 端点测试)。

进一步设置单元测试时,surefire plugin 按预期工作,并在 jacoco 报告中显示适当的覆盖范围。

0 个答案:

没有答案