在Spock中,有沒有辦法將集合中每個項目的斷言轉化爲自己的測試,以便通過/失敗,類似於when
和@Unroll
?Spock - 將收集的斷言擴展爲單獨的測試,例如@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 || ...
....
但是,這將重新運行整個測試多次,這不是我想要的東西要麼 - 我希望有一個單一的測試執行,但與每個收集元素上的斷言報告爲獨立測試通過/失敗。
這將仍然表現爲一個單一的測試失敗 - 在度量方面,它是相同的集合中的一個元素是否失效的所有元素失敗。 – wrschneider