【发布时间】:2015-05-13 15:19:47
【问题描述】:
在 Spock 中,有没有一种方法可以将集合中每个项目的断言转换为可以通过/失败的自己的测试,类似于 when 和 @Unroll 发生的情况?
如果我遵循最简单和最明显的方法(记录在Asserting on a list of items in Spock)
when: def list = // do a bunch of stuff
then: list.each { ... assert it.foo == bar ... }
然后测试失败将停止迭代并且不会测试列表中的其他项目。我可以改为在循环中建立一个错误列表,然后将assert 拉到循环之外,但我希望能从测试框架中获得一些影响。
我可以改用where,
then: list[idx].foo == bar
where:
idx || bar
0 || ...
1 || ...
2 || ...
....
但是,这会多次重新运行整个测试,这也不是我想要的——我想要一个测试执行,但每个集合元素上的断言报告为独立的测试通过/失败。
【问题讨论】:
标签: unit-testing groovy spock