测试覆盖率在 IntelliJ Idea 中不起作用
Test Coverage not working in IntelliJ Idea
虽然 运行 具有覆盖范围的应用程序未显示覆盖范围。我看到我的日志与工作机器日志的区别是 coverage-agent.jar 没有记录在我的控制台日志中。有人知道解决方法吗?
我是 运行 IntellijIdea Ultimate 2019.2.1 和 JDK 版本 1.8.221。我尝试了所有选项,例如卸载 IntelliJ,也尝试了社区版,降级到较低版本,将 JDK 版本更改为更高的 9 和更低的 1.8.211,检查了插件,还删除了 Intellij 设置文件夹,但是 none 他们工作了。
我联系了 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-02.6603.8\lib\idea_rt.jar=52886:C:\Users\<User> Baskota\AppData\Local\JetBrains\Toolbox\apps\IDEA-U\ch-02.6603.8\bin" -Dfile.encoding=UTF-8 -classpath "C:\Users\<User> Baskota\AppData\Local\JetBrains\Toolbox\apps\IDEA-U\ch-02.6603.8\lib\idea_rt.jar;C:\Users\<User> Baskota\AppData\Local\JetBrains\Toolbox\apps\IDEA-U\ch-02.6603.8\plugins\junit\lib\junit-rt.jar;C:\Users\<User> Baskota\AppData\Local\JetBrains\Toolbox\apps\IDEA-U\ch-02.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-02.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-02.6262.58\lib\idea_rt.jar=63530:C:\Users\<User>\AppData\Local\JetBrains\Toolbox\apps\IDEA-U\ch-02.6262.58\bin -Dfile.encoding=UTF-8 -classpath "C:\Users\<User>\AppData\Local\JetBrains\Toolbox\apps\IDEA-U\ch-02.6262.58\lib\idea_rt.jar;C:\Users\<User>\AppData\Local\JetBrains\Toolbox\apps\IDEA-U\ch-02.6262.58\plugins\junit\lib\junit-rt.jar;C:\Users\<User>\AppData\Local\JetBrains\Toolbox\apps\IDEA-U\ch-02.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-02.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
。然后在 Help
| 编辑自定义属性 指定这个新位置:
java.test.agent.lib.path=c:/coverage-lib
你还需要复制IDEA_HOME\lib\intellij-coverage-agent-1.0.508.jar
(版本可能不同)到同一个位置不带空格
重新启动 IntelliJ IDEA。
虽然 运行 具有覆盖范围的应用程序未显示覆盖范围。我看到我的日志与工作机器日志的区别是 coverage-agent.jar 没有记录在我的控制台日志中。有人知道解决方法吗?
我是 运行 IntellijIdea Ultimate 2019.2.1 和 JDK 版本 1.8.221。我尝试了所有选项,例如卸载 IntelliJ,也尝试了社区版,降级到较低版本,将 JDK 版本更改为更高的 9 和更低的 1.8.211,检查了插件,还删除了 Intellij 设置文件夹,但是 none 他们工作了。 我联系了 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-02.6603.8\lib\idea_rt.jar=52886:C:\Users\<User> Baskota\AppData\Local\JetBrains\Toolbox\apps\IDEA-U\ch-02.6603.8\bin" -Dfile.encoding=UTF-8 -classpath "C:\Users\<User> Baskota\AppData\Local\JetBrains\Toolbox\apps\IDEA-U\ch-02.6603.8\lib\idea_rt.jar;C:\Users\<User> Baskota\AppData\Local\JetBrains\Toolbox\apps\IDEA-U\ch-02.6603.8\plugins\junit\lib\junit-rt.jar;C:\Users\<User> Baskota\AppData\Local\JetBrains\Toolbox\apps\IDEA-U\ch-02.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-02.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-02.6262.58\lib\idea_rt.jar=63530:C:\Users\<User>\AppData\Local\JetBrains\Toolbox\apps\IDEA-U\ch-02.6262.58\bin -Dfile.encoding=UTF-8 -classpath "C:\Users\<User>\AppData\Local\JetBrains\Toolbox\apps\IDEA-U\ch-02.6262.58\lib\idea_rt.jar;C:\Users\<User>\AppData\Local\JetBrains\Toolbox\apps\IDEA-U\ch-02.6262.58\plugins\junit\lib\junit-rt.jar;C:\Users\<User>\AppData\Local\JetBrains\Toolbox\apps\IDEA-U\ch-02.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-02.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
。然后在 Help
| 编辑自定义属性 指定这个新位置:
java.test.agent.lib.path=c:/coverage-lib
你还需要复制IDEA_HOME\lib\intellij-coverage-agent-1.0.508.jar
(版本可能不同)到同一个位置不带空格
重新启动 IntelliJ IDEA。