IntelliJ IDEA的测试覆盖率窗口无法显示

8
我正在使用Spring Boot项目和IntelliJ IDEA的最新版本(2018.2.1 Ultimate Edition)。
当我运行所有测试并覆盖率时,覆盖率窗口不会显示,并且我的主要类旁边没有百分比。
我尝试通过转到“View -> Tool Windows -> Coverage”来启用覆盖窗口,但是覆盖选项卡被禁用(无法点击)。

enter image description here

如果我没记错的话,在更新 IntelliJ 之前覆盖率工具是正常工作的。这是最新版本的一个 bug 吗?
编辑: 覆盖率插件已经安装。 enter image description here

1
尝试重新安装Intellij IDEA。在安装过程中,它会询问是否安装“Coverage”插件。 - Dherik
1
如果插件未安装,您无需重新安装IDE来解决问题...只需安装插件即可。 - ChiefTwoPencils
1
@ChiefTwoPencils,大家注意了,覆盖率插件已经安装好了,看我的编辑! - K. Ayoub
我使用IntelliJ IDEA 2018.2(Build #IU-182.3684.101,于2018年7月24日构建)运行了SpringBoot应用程序的测试,并使用IntelliJ IDEA 2018.2.1(Build #IU-182.3911.36,于2018年8月6日构建)进行了测试。在两种情况下都显示了覆盖率窗口。因此,这看起来不像是更新问题。 - streetturtle
@BasLeijdekkers 是的,它告诉我“未配置覆盖套件”。 - K. Ayoub
显示剩余3条评论
8个回答

7
你的电脑上可能安装了Coverage插件,但是被禁用了,例如在启用插件后未重新启动IntelliJ。请双重检查Coverage插件是否已启用并尝试重新启动。根据IntelliJ Code Coverage docs
先决条件 确保启用了代码覆盖率插件。该插件默认激活。如果插件被禁用,请按照《管理插件》中的说明在插件设置页面上启用它。如果插件被禁用,则运行/调试配置对话框中将不会显示代码覆盖选项卡。
尝试打开“设置”>“构建、执行、部署”>“覆盖率”并选中“激活覆盖率视图”复选框。然后再次使用Coverage运行另一个测试。

2
谢谢您的回答,我检查了您所说的一切,但是什么都不起作用。 - K. Ayoub
@K.Ayoub,您是在运行IntelliJ使用古老的JDK 6还是最新的JDK 10/11呢? - Karol Dowbecki
我正在JDK 10上运行Intellij。 - K. Ayoub
@K.Ayoub的覆盖率基于字节码插装或其他低级JDK功能。尝试降级到8或9,看看是否有助于解决此特定插件的问题。 - Karol Dowbecki

6

对于我而言,在Intellij中,我验证了所有的设置,都是正确的。由于我的测试类放在了错误的包里,因此Intellij没有显示出覆盖率。

如果代码的包名为:com.company.domain.module,那么测试类也应该放在com.company.domain.module中。

一旦我纠正了包名,覆盖率就开始显示出来了。


这个是有效的。但是如果我想要我的测试包名称不同怎么办? - Captain Jacky

3
这不是JDK或最新版的IntelliJ的问题。
以下是您需要按照的步骤并查看覆盖窗口。使用覆盖运行项目,有时如果无法看到覆盖窗口,则不会显示覆盖窗口,然后:
- 按下shift+f9 - 然后点击停止并重新运行
完成后,将显示覆盖窗口。
如果仍然无法看到覆盖窗口,请仔细检查覆盖视图是否启用并按照以下步骤进行操作:
- 按下ctrl+alt+s - 扩展“构建、执行和部署” - 点击“覆盖率” - 选择第一个单选框并激活覆盖视图 - 点击应用,然后点击确定
再次按照上述步骤运行覆盖,并按shift+f9等键。
希望这能帮到您。

第一个单选框已经被选中,Shift+F9也没有帮助。 - K. Ayoub
运行覆盖率后,点击调试,然后它就会工作。 - Ammar Ali

3
尝试访问以下网址:

Run-->edit configurations-->select code coverage ( then you can select IDEA/EMMA/...)

1
默认情况下选择的是Intellij Idea。 - K. Ayoub

2

对我来说,类的包是个问题。

测试类和源代码类应该具有相同的包路径。

例如-

如果代码位于包中:*src.main.* com.company.domain.module,则测试类也应在 *src.test.*com.company.domain.module 中。

您可以重命名您的包

或者

如果您不想重命名包,请尝试以下操作:

修改运行配置 -> 代码覆盖率 -> 您将看到测试类的路径。 添加您的源类路径。


1

我不确定你是否已经找到了解决方案,但我曾遇到相同的问题并得到了解决。

在我的情况下,问题出在覆盖范围的jar包无法获取,因为目录名称中有空格。

请按照以下线程操作,并告诉我是否有所帮助。

Intellij 覆盖率无法工作

谢谢。


0
如果有人遇到同样的问题,我在“更多运行/调试”部分找到了选项。

0

在我的情况下,IntelliJ中的所有设置都是正确的。由于我的测试类位于错误的包中,所以IntelliJ没有显示覆盖率。

https://dev59.com/8a3la4cB1Zd3GeqPOo6T#72973840所建议,如果代码位于com.company.domain.module包中,则测试类也应该位于com.company.domain.module包中。

然而,如果你确实需要使用不同的包命名,而不是修改包名称,你可以按照下面的步骤添加覆盖率。

进入修改运行配置。

menu

然后添加实际(生产代码)程序包。

code coverage package

运行带覆盖率后,现在生产类已经被覆盖。当您打开生产类时,它的代码行将用红色/绿色线条进行突出显示。

coverage report


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