我写了一个spock测试,我试图在一个项目列表上进行断言。比方说,我想检查列表中的每个数字是否等于500:
def numbers = [1,2,3,4]
numbers.each{
assert it == 500
}
返回以下内容
Assertion failed:
assert it == 500
| |
1 false
如何在列表中进行断言而不会在第一次失败时停止?这是伴随我断言的spock测试:
def "Check if each number in a list is 500"{
given: "A list of numbers"
def numbers = [1,2,3,4]
expect: "each number to be 500"
numbers.each{
assert it == 500
}
澄清我希望在我的spock测试报告中看到每个失败
所以我应该看到1!= 500,2!= 500等等。
答案 0 :(得分:4)
你也可以这样:
@Unroll
def "Check if #number is 500"(){
expect:
number == 500
where:
number << [1,2,3,4]
}
不确定是否符合您的需求
答案 1 :(得分:2)
如果由于某种原因你不能用@Unroll
条款运行where
ed测试,你可能会得到一个可接受的结果:
def "Check if each number in a list is 500" () {
given: "A list of numbers"
def numbers = [1,2,3,4]
expect: "each number to be 500"
numbers.collect { it == 500 }.every { it }
}
当我跑步时,我得到以下结果:
Condition not satisfied:
numbers.collect { it == 500 }.every { it }
| | |
| | false
| [false, false, false, false]
[1, 2, 3, 4]
at WhateverSpec.Check if each number in a list is 500(WhateverSpec.groovy:10)
请注意,条件表达式的第二部分显示列表中的每个项目的相等表达式都为false。第三部分评估布尔值列表,确保它们都是正确的(当然,它们不是,确保您的测试失败而不必明确断言)。