【问题标题】:No coverage in 'all classes in scope' in IntellijIntellij 中的“范围内的所有类”没有覆盖范围
【发布时间】:2015-11-03 10:39:49
【问题描述】:

在 Intellij IDEA 14.1.5 社区版中,我导入了 maven 以从 jacoco.exec 文件中获取覆盖。后续步骤

  1. 右键单击导入的模块。

  2. 选择分析-->显示收敛数据。

  3. 提供有效的 jacoc.exec 文件并点击“显示选定”

我得到了错误,而不是覆盖范围,因为 “范围内的所有类”中没有覆盖范围

任何人都可以提出什么问题吗?

【问题讨论】:

  • 您可以尝试将 jacoco 降级到 7.4.x 或更早版本吗?
  • 我正在使用 Jacoco 0.7.8 并且在 IntelliJ 中也看到了这一点

标签: intellij-idea code-coverage jacoco


【解决方案1】:

我也遇到过同样的事情。

我可以通过转到“编辑配置”的“代码覆盖率”选项卡来解决此问题。

我不确定是什么原因造成的,但那里列出了错误的包命名空间。我更新了那里的条目,我随后的代码覆盖测试运行成功。

【讨论】:

  • 仅供参考,这是因为我的测试代码和生产代码的包结构不匹配。所以我的班级在 foo.bar.baz.myclass 和 testclass 在 foo.bar.mytestclass
【解决方案2】:

如果您的测试类和要测试的类位于不同的包结构中,就会发生这种情况。

我的测试班在:

com.tools.api

要测试的类在:

com.tools.ws

在代码覆盖率选项卡中将模式更正为com.tools.* 后,我就能看到覆盖率结果。

【讨论】:

  • 谢谢!事实证明,当您选择只运行一个测试时,IntelliJ 对您想要查看的覆盖范围做出了一个糟糕的选择。当您选择只运行一个测试类或一个测试类包时,它会创建一个新的运行配置。它默认只记录与测试在同一包中的类的覆盖率。这给我带来了一个问题,因为我有时会分包我的测试。这个答案让我明白了这个事实。
  • 匹配类和测试类可能是最好的一致性和可读性
  • 感谢您的解决方案。我喜欢添加另一个名为“unit”或“integration”的packacke,因为例如我将服务类作为单元测试(使用 moching 数据库)和集成测试(使用测试数据库)进行测试。我知道这可以通过命名类 MyServiceUnitTest 和 MyServiceIntegrationTest 来解决,但我喜欢额外的结构。所以定义包含的包解决了这个问题。
【解决方案3】:

我遇到了同样的问题并找到了解决方案here

在“代码覆盖率”选项卡中,定义以下选项:

指定测量代码覆盖率的范围。执行以下操作之一: 要指定一个类,请单击“添加类”按钮。

要指定一个包,请单击“添加包”按钮。

【讨论】:

    【解决方案4】:

    我能够通过以下方式解决此问题:

    1. 打开Edit Configurations菜单
    2. 点击Modify Options > Coverage settings > Specify classes and packages
    3. 在出现的新框中,点击加号添加包
    4. 从项目中选择一个高级包

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-18
      • 1970-01-01
      • 2019-11-11
      • 1970-01-01
      相关资源
      最近更新 更多