最近,一位同事将Spock单元测试引入到我们团队的项目中,我对它的Eclipse集成遇到了一个恼人的问题:每当我们创建参数化测试并在其上使用@Unroll注释时,Eclipse视图就会失去与测试类的关联,并在“un根测试”下显示结果。
例如,这个测试类的结果:
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插件能够理解的吗?
我在用:
发布于 2014-03-04 07:22:53
这是一个众所周知的问题,因为史波克无法(通过其JUnit外观)预先告诉Eclipse多少测试方法将运行,以及它们的名称。(在数据驱动的测试中,这两个方面都是动态的。预先向Eclipse报告的内容与不使用@Unroll时相同。将此与测试运行期间报告的内容相关联时,Eclipse会感到困惑。)
我想不出在斯波克这边解决这个问题的好办法。我曾经考虑过一些方法,比如在Eclipse中运行时添加一些难看的启发式方法或者两次执行测试,但是没有一个是令人信服的。一个更理想的解决方案是改进Eclipse插件,以更好地处理这种情况,这也可能出现在许多其他JUnit兼容的测试框架中。
如果无法接受当前的输出,请执行以下几个步骤:
@Unroll。(它只影响报告,而不影响执行。它被选择加入的一个原因是有些IDE对此有问题。)https://stackoverflow.com/questions/22159793
复制相似问题