gpt4 book ai didi

eclipse - 如何阻止 @Unrolled Spock 测试在 Eclipse Junit View 中显示为 "Unrooted Tests"?

转载 作者:行者123 更新时间:2023-12-02 07:00:17 27 4
gpt4 key购买 nike

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

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

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]
}
}

这样显示:

Spock tests annotated with @Unroll display under "Unrooted Tests"

如何让展开的测试用例(例如“展开的测试 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

最佳答案

这是一个众所周知的问题,因为 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 - 如何阻止 @Unrolled Spock 测试在 Eclipse Junit View 中显示为 "Unrooted Tests"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22159793/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com