IntelliJ IDEA中的测试覆盖率不起作用

6
在运行应用程序时,使用覆盖率检查工具时未显示出覆盖率。通过比较工作机器的日志和我的日志发现,控制台日志中没有记录coverage-agent.jar的差异。 有人知道修复方法吗?
我正在运行Intellij IDEA Ultimate 2019.2.1和JDK版本1.8.221。我尝试了所有选项,如卸载IntelliJ,也尝试在社区版上运行,降级到较低版本,将JDK版本更改为更高的9和更低的1.8.211,检查插件,还删除了Intellij设置文件夹,但都没有成功。
以下是在覆盖模式下运行时的日志。 我们在这里看不到coverage-agent jar调用日志。
"C:\Program Files\Java\jdk1.8.0_221\bin\java.exe" -ea -Didea.test.cyclic.buffer.size=1048576 "-javaagent:C:\Users\<User> Baskota\AppData\Local\JetBrains\Toolbox\apps\IDEA-U\ch-0\192.6603.8\lib\idea_rt.jar=52886:C:\Users\<User> Baskota\AppData\Local\JetBrains\Toolbox\apps\IDEA-U\ch-0\192.6603.8\bin" -Dfile.encoding=UTF-8 -classpath "C:\Users\<User> Baskota\AppData\Local\JetBrains\Toolbox\apps\IDEA-U\ch-0\192.6603.8\lib\idea_rt.jar;C:\Users\<User> Baskota\AppData\Local\JetBrains\Toolbox\apps\IDEA-U\ch-0\192.6603.8\plugins\junit\lib\junit-rt.jar;C:\Users\<User> Baskota\AppData\Local\JetBrains\Toolbox\apps\IDEA-U\ch-0\192.6603.8\plugins\junit\lib\junit5-rt.jar;C:\Program Files\Java\jdk1.8.0_221\jre\lib\charsets.jar;C:\Program Files\Java\jdk1.8.0_221\jre\lib\deploy.jar;C:\Program Files\Java\jdk1.8.0_221\jre\lib\ext\access-bridge-64.jar;C:\Program Files\Java\jdk1.8.0_221\jre\lib\ext\cldrdata.jar;C:\Program Files\Java\jdk1.8.0_221\jre\lib\ext\dnsns.jar;C:\Program Files\Java\jdk1.8.0_221\jre\lib\ext\jaccess.jar;C:\Program 

以下是在使用相同的IntelliJ IDEA版本和JDK版本的不同机器上运行同一项目时的控制台日志。这里覆盖率正常工作,日志中有覆盖率代理jar的调用记录。

"C:\Program Files\Java\jdk1.8\bin\java.exe" -ea -javaagent:C:\Users\<User>\AppData\Local\JetBrains\Toolbox\apps\IDEA-U\ch-0\192.6262.58\lib\intellij-coverage-agent-1.0.508.jar=C:\Users\<User>\AppData\Local\Temp\coverage1args -Didea.test.cyclic.buffer.size=1048576 -javaagent:C:\Users\<User>\AppData\Local\JetBrains\Toolbox\apps\IDEA-U\ch-0\192.6262.58\lib\idea_rt.jar=63530:C:\Users\<User>\AppData\Local\JetBrains\Toolbox\apps\IDEA-U\ch-0\192.6262.58\bin -Dfile.encoding=UTF-8 -classpath "C:\Users\<User>\AppData\Local\JetBrains\Toolbox\apps\IDEA-U\ch-0\192.6262.58\lib\idea_rt.jar;C:\Users\<User>\AppData\Local\JetBrains\Toolbox\apps\IDEA-U\ch-0\192.6262.58\plugins\junit\lib\junit-rt.jar;C:\Users\<User>\AppData\Local\JetBrains\Toolbox\apps\IDEA-U\ch-0\192.6262.58\plugins\junit\lib\junit5-rt.jar;C:\Program Files\Java\jdk1.8\jre\lib\charsets.jar;C:\Program Files\Java\jdk1.8\jre\lib\deploy.jar;C:\Program Files\Java\jdk1.8\jre\lib\ext\access-bridge-64.jar;C:\Program Files\Java\jdk1.8\jre\lib\ext\cldrdata.jar;C:\Program Files\Java\jdk1.8\jre\lib\ext\dnsns.jar;C:\Program Files\Java\jdk1.8\jre\lib\ext\jaccess.jar;C:\Program 

有人遇到过这种奇怪的问题吗?我的代码覆盖率之前还正常运行,但最近几天不工作了。

2个回答

4

如果覆盖库的路径中包含空格,则代码覆盖率可能无法正常工作。您可以通过以下行在 idea.log 中确认:

2019-08-31 19:30:17,148 [ 130152]   INFO - ij.execution.JavaExecutionUtil - agent not used since the agent path contains spaces: C:\Users\Some User Name With Spaces\AppData\Local\JetBrains\Toolbox\apps\IDEA-U\ch-0\192.6603.8\plugins\coverage\lib
One can move the agent libraries to a directory with no spaces in path and specify its path in idea.properties as java.test.agent.lib.path=<path> 

解决方法是将指定的lib目录复制到没有空格的新位置,例如 c:\coverage-lib。然后在 帮助 | 编辑自定义属性 中指定这个新位置。
java.test.agent.lib.path=c:/coverage-lib

您还需要将IDEA_HOME\lib\intellij-coverage-agent-1.0.508.jar(版本可能不同)复制到没有空格的相同位置。

重新启动IntelliJ IDEA。


真巧,我也收到了来自IntelliJ支持团队的同样回复,是由于覆盖率插件存在带空格的目录名称而出现了问题。在将coverage\lib复制到某个无空格目录中,并添加一个额外的intellij-coverage-agent.jar文件(该文件不在coverage lib文件夹中),就可以解决问题了。感谢您的及时答复。 :) - Sushan Baskota
@SushanBaskota 那个回复也是我发的 ;) - CrazyCoder
哇!太感谢了。非常感谢你的帮助。 - Sushan Baskota

-1

我也遇到了这个问题。对我来说,问题在于我的测试类的包名与服务类的包名不匹配。将它们匹配起来就解决了这个问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接