问题描述
我已经设置了 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
文件已经生成,报告文件如下。
版本:
<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 报告中显示适当的覆盖范围。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)