java - 测试覆盖率在 IntelliJ IDEA 中不起作用

标签 java windows intellij-idea code-coverage

在运行带有覆盖率的应用程序时,未显示覆盖率。我发现我的日志与工作机器日志的区别是 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/

相关文章:

java - 什么是类路径以及如何设置它?

java - 在 Haskell 或 Clojure 等函数式编程语言中,函数是如何组织的?

java - 在 CXF 中使用 rpc/encoded 样式的方法

windows - 如何在批处理文件中执行多个 git 命令而不在第一个命令后终止?

intellij-idea - 有没有办法使用键盘快捷键启用/禁用 Intellij IdeaVim 插件?

java - 带有 List<String> 的原始类型给出编译错误

java - ImageIcon 帮助 + 关闭 JOptionPane

.net - 如何计算计算机下载的数量?

.net - 使用单个 exe 部署 Windows 窗体应用程序

从 jar 运行时无法加载 javafx 资源