在运行带有覆盖率的应用程序时,未显示覆盖率。我发现我的日志与工作机器日志的区别是 coverage-agent.jar 没有记录在我的控制台日志中。有人知道解决方法吗?
我正在运行 Intellij IDEA Ultimate 2019.2.1 和 JDK 版本 1.8.221。我尝试了所有选项,例如卸载 IntelliJ,也尝试了社区版,降级到较低版本,将 JDK 版本更改为更高的 9 和更低的 1.8.211,检查了插件,还删除了 Intellij Settings 文件夹,但没有一个有效。 我联系了 IntelliJ 支持团队,他们还建议删除 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
有人遇到过这种奇怪的问题吗?直到几天前,我的报道才有效。
最佳答案
如果覆盖率库的路径包含空格,代码覆盖率可能无法工作。你可以通过 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。
关于java - 测试覆盖率在 IntelliJ IDEA 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57742666/