问题描述
我在使用 jacoco-maven-plugin
和 maven-surefire-plugin
时遇到问题:似乎没有完成覆盖率分析!!!
为了向您提供更多信息,我使用了 jacoco-maven-plugin
并且它运行良好。但是,我在运行测试时发现了一个性能问题,并在此处找到了解决方案:https://github.com/nats-io/nats-streaming-server/issues/698
我将以下部分添加到我的 maven 的 pom.xml 中:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<!--
Option used to speedup NATS tests (cf. https://github.com/nats-io/nats-streaming-server/issues/698)
-->
<configuration>
<argLine>-Djava.security.egd=file:/dev/./urandom</argLine>
</configuration>
</plugin>
我的性能问题已解决,但我意识到不再进行覆盖分析!!! (当然,我试图恢复我的更改:这个缺陷消失了)
在 the following page 上,我看到这个缺陷已经得到处理,但是提出的解决方案(从子模块 pom 中移动“maven-surefire-plugin,并且只将它放在父 pom 的构建部分”)确实不适合我
我做了额外的测试。在我的测试运行时,我尝试检查 maven 运行的命令行
这是我获得的:
仅指定 jacoco-maven-plugin
时:
$ ps aux | grep 'urandom\|jacoco'
pmesmeur 1477900 0.0 0.5 9181248 132192 pts/25 Sl+ 21:58 0:02 /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java -javaagent:/home/25 Sl+ repository/org/jacoco/org.jacoco.agent/0.8.5/org.jacoco.agent-0.8.5-runtime.jar =destfile=/media/cersei/ssd/data/home/pmesmeur/Devel/Misys/Projects/SFX/SandBoxes/test.coverage.while.removing.maven.surefire.plugin/RemoteLpConnector/clientlib/lpconnector_integration/target/jacoco.exec,append=true -jar /media/cersei/ssd/data/home/pmesmeur/Devel/Misys/Projects/SFX/SandBoxes/test.coverage.while.removing.maven.surefire.plugin /RemoteLpConnector/clientlib/lpconnector_integration/target/surefire/surefirebooter2551385423703193145.jar /media/cersei/ssd/data/home/pmesmeur/Devel/Misys/Projects/SFX/SandBoxes/test.coverage.while.removing.removing. /RemoteLpConnector/clientlib/lpconnector_integration/target/surefire 2021-06-30T21-58-25_026-jvmrun1 surefire7433391136694530406tmp su refire_06093582606115842162tmp
当同时指定了 jacoco-maven-plugin
和 maven-surefire-plugin
时:
$ ps aux | grep 'urandom\|jacoco'
pmesmeur 1478702 0.0 0.0 2632 772 pts/25 S+ 22:03 0:00 /bin/sh -c cd /media/cersei/ssd/data/home/pmesmeur/Devel/Misys/Projects/SFX/SandBoxes/test .coverage.while.removing.maven.surefire.plugin/RemoteLpConnector/clientlib/lpconnector_integration && /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java -Djava.security.egd=file:/dev /./urandom -jar /media/cersei/ssd/data/home/pmesmeur/Devel/Misys/Projects/SFX/SandBoxes/test.coverage.while.removing.maven.surefire.plugin/ RemoteLpConnector/clientlib/lpconnector_integration/target/surefire/surefirebooter4018295361004976187.jar /media/cersei/ssd/data/home/pmesmeur/Devel/Misys/Projects/SFX/SandBoxes/test.coverage.while.removing.maven.m RemoteLpConnector/clientlib/lpconnector_integration/target/surefire 2021-06-30T22-03-23_413-jvmrun1 surefire4924791797502979280tmp surefire_0799861275955488820>58t
我现在完全确定启用 maven-surefire-plugin
时不会启动 jacoco
如果有人可以帮助我,我将不胜感激
最好的问候 菲利普
解决方法
我尝试通过 maven 命令行提供 argLine
:
-DargLine="-Djava.security.egd=file:/dev/./urandom"
但我遇到了同样的问题
我在以下页面找到了解决问题的方法:https://www.eclemma.org/jacoco/trunk/doc/prepare-agent-mojo.html
- 定义一个
<property>
:<argLine>-Djava.security.egd=file:/dev/./urandom</argLine>
- 在
<configuration>
中定义一个空的maven-surefire-plugin
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <configuration> <!-- no argLine here --> </configuration> </plugin>