【问题标题】:Zero coverage with IntelliJ IDEA: Grails with Spock unit testsIntelliJ IDEA 的零覆盖:带有 Spock 单元测试的 Grails
【发布时间】:2015-10-12 18:30:51
【问题描述】:

在运行基于 Spock 的单元测试时,我正在尝试为 Grails 应用程序配置代码覆盖率报告。我能够生成报告,但覆盖率为 0。

我尝试过使用各种选项(例如 SamplingTracing),但结果始终相同:显示的类/方法/行的总数是正确的,但覆盖率始终为0,例如:

类,%:0%(0/2)

方法,%:0%(0/4)

线,%:0%(0/16)

这显然是假的,因为可以修改相关代码,导致测试失败。

设置:

  • OS X Yosemite 10.10.2
  • IntelliJ IDEA Ultimate 14.1.3
  • Grails 2.4.4
  • Spock 0.7
  • Groovy 2.4.3
  • Java 1.8.0-31

【问题讨论】:

    标签: grails intellij-idea groovy code-coverage


    【解决方案1】:

    我写信给 JetBrains 支持,他们指出了以下问题:

    https://youtrack.jetbrains.com/issue/IDEA-137285

    总之,分辨率就是指定

    grails.project.fork = [
      test: false
    ]
    

    BuildConfig.groovy 中。

    另外,请参阅 IntelliJ IDEA Debugger isn't working on a Grails Project - 那里有一些关于何时/如何/为什么使用分叉模式的有用信息。

    【讨论】:

    • 这会在某些情况下大大减慢测试用例的执行速度。在此之后,我目前面临着缓慢的问题。
    【解决方案2】:

    几个月前我也遇到过类似的问题。我使用 STS 并编写了基于 Spock 的测试用例。

    您正在使用的代码覆盖插件并未将基于 Spock 的测试用例视为实际测试用例。它只考虑 JUinit 测试用例。

    所以这里的解决方案是寻找与 IntelliJ 兼容的其他代码覆盖插件。我无法向您推荐我用于 STS 的插件,因为它可能适用于 IntelliJ,也可能不适用于 IntelliJ。

    我希望至少我说清楚了问题所在。

    【讨论】:

    • 谢谢!我已将此问题提交给 JetBrains 支持。如果他们确实证实这是问题所在,我会接受您的回答。
    • 从 JetBrains 得到答案 - 禁用分叉可以解决问题
    • 完美。将使用我的旧插件在 STS 中检查类似情况。但归根结底,这是 IDE 的问题。酷。
    【解决方案3】:

    我今天遇到了这个错误。我最终发现你不应该使用工具栏中的“运行覆盖范围的应用程序”,而应该使用项目上下文菜单中的“运行 'Test in 'application'' with Coverage”。

    当您在 IntelliJ 中运行测试时,会在“运行/调试配置”中创建一个 JUnit 测试,这些可以从工具栏中使用(例如,用于重新运行)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-05-19
      • 1970-01-01
      • 1970-01-01
      • 2014-06-21
      • 2016-06-17
      • 1970-01-01
      • 2013-06-15
      相关资源
      最近更新 更多