【问题标题】:How do I stop @Unrolled Spock tests from showing up as "Unrooted Tests" in the Eclipse Junit View?如何阻止 @Unrolled Spock 测试在 Eclipse Junit 视图中显示为“无根测试”?
【发布时间】:2014-04-05 06:29:12
【问题描述】:

一位同事最近在我们团队的项目中引入了 Spock 单元测试,我在其 Eclipse 集成中遇到了一个烦人的问题:每当我们创建参数化测试并在其上使用 @Unroll 注释时,Eclipse JUnit 视图就会丢失与测试类关联并在“Unrooted Tests”下显示结果。

例如,这个测试类的结果:

package test

import spock.lang.Specification
import spock.lang.Unroll

class TestSpockTest extends Specification {

    def "Not Unrolled Test"() {
        when: "something"
        then: "one equals one"
            1 == 1
    }

    @Unroll
    def "Unrolled Test #param"(Integer param) {
        when: "something"
        then: "a numer equals itself"
            param == param
        where:
            param << [1, 2, 3]
    }
}

这样显示:

如何让展开的测试用例(例如“展开的测试 1”)像“未展开的测试”一样显示在“test.TestSockTest”下?我的 Spock 测试是否有一些 Eclipse JUnit 插件可以理解的命名约定?

我正在使用:

  • Eclipse 开普勒 SR1
  • spock-core-0.7-groovy-2.0
  • Jspresso Spock 插件 2.71
  • Groovy-Eclipse 插件 2.8
  • JUnit 4.8.2

【问题讨论】:

  • 您是否也尝试过在类级别而不是方法级别的@Unroll?
  • 是的。 @Unroll 是在类还是方法级别无关紧要,Eclipse JUnit 视图仍然显示相同的内容。
  • 我看到了一个相关的bug in eclipse。可能就是这个原因。
  • Spock 也遇到了那个 Eclipse 错误(如果你使用空格),但是即使我从他们的名字中删除了空格,测试仍然显示为无根。
  • 我已经为此提交了一份 Eclipse 错误报告:bugs.eclipse.org/bugs/show_bug.cgi?id=429606。如果你想看到这个问题,请投票给它。

标签: eclipse groovy junit spock junit-runner


【解决方案1】:

这是一个众所周知的问题,因为 Spock 无法(通过其 JUnit 外观)预先告诉 Eclipse 将运行多少测试方法以及它们的名称。 (在数据驱动的测试中,这两个方面都是动态的。预先向 Eclipse 报告的内容与未使用 @Unroll 时相同。当将其与测试运行期间报告的内容相关联时,Eclipse 会感到困惑。)

我想不出在 Spock 方面解决这个问题的好方法。我考虑过一些方法,例如在 Eclipse 中运行时添加一些丑陋的启发式或执行两次测试,但没有一个令人信服。更理想的解决方案是改进 Eclipse JUnit 插件以更好地处理这种情况,这也可能出现在许多其他与 JUnit 兼容的测试框架中。

如果您无法接受当前的输出,可以采取以下步骤:

  • Eclipse issue tracker 中提出改进请求,并要求Spock forum 上的所有人投票。
  • 不要使用@Unroll。 (它只影响报告,不影响执行。选择加入的原因之一是某些 IDE 存在问题。)
  • 改用 IntelliJ IDEA,它提供比 Eclipse 更好的 Groovy、JUnit 和 Spock 支持。
  • 责备你的同事介绍 Spock。 :-)

【讨论】:

  • 感谢您的回复。我决定向 Eclipse 项目提交错误报告:bugs.eclipse.org/bugs/show_bug.cgi?id=429606
  • 我敢打赌,如果 OP 指责介绍 Spock,他最终会为他的同事赞助一顿午餐。 ;)
  • 我建议用更一般的术语来制定改进请求(例如“当静态和运行时Descriptions 不匹配时更好的测试树输出”),因为它不是特定于 Spock 的。
  • 您认为您可以自己在错误报告中添加带有该详细信息的评论吗?我对此知之甚少,无法权威地衡量实际问题是什么,但你知道。
猜你喜欢
  • 2012-08-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-19
相关资源
最近更新 更多