Kay*_* II 2 eclipse groovy junit spock junit-runner
一位同事最近在我们团队的项目中引入了Spock单元测试,并且我在Eclipse集成方面遇到了一个恼人的问题:每当我们创建参数化测试并在其上使用@Unroll注释时,Eclipse JUnit视图就会失去与它的关联.测试类并在"无根测试"下显示结果.
例如,此测试类的结果:
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]
}
}
Run Code Online (Sandbox Code Playgroud)
以这种方式显示:

如何将展开的测试用例(例如"展开的测试1")显示在"test.TestSockTest"下,如"未展开的测试"?我的Spock测试是否有一些Eclipse JUnit插件可以理解的命名约定?
我正在使用:
这是一个众所周知的问题,因为Spock不能(通过它的JUnit外观)告诉Eclipse预先运行多少测试方法,以及它们的名称是什么.(在数据驱动的测试中,这两个方面都是动态的.预先向Eclipse报告的内容与@Unroll未使用时相同.当将此与测试运行期间报告的内容相关联时,Eclipse会感到困惑.)
我想不出在Spock方面解决这个问题的好方法.我已经考虑过在Eclipse内部运行时添加一些丑陋的启发式或执行两次测试的方法,但是没有一个能让人信服.一个更理想的解决方案是改进Eclipse JUnit插件以更好地处理这种情况,这种情况也可能出现在许多其他JUnit兼容的测试框架中.
如果您无法使用当前输出,请执行以下步骤:
@Unroll.(它只影响报告,而不是执行.选择加入的一个原因是某些IDE有问题.)| 归档时间: |
|
| 查看次数: |
2070 次 |
| 最近记录: |