I have written a spock test where I'm trying to make assertions on a list of items. Let's say as an example I want to check every number in a list if it is equal to 500:
def numbers = [1,2,3,4]
numbers.each{
assert it == 500
}
Returns the following
Assertion failed:
assert it == 500
| |
1 false
How can I make an assertion on a list without stopping at the first failure? Here is the spock test to accompany my assertion:
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
}
To clarify I want to see each failure in my spock test report
So I should see the 1 != 500, 2!= 500, etc.
You can also have something like this:
@Unroll
def "Check if #number is 500"(){
expect:
number == 500
where:
number << [1,2,3,4]
}
Not sure that fits your needs though
If for some reason you cannot run as an @Unroll
ed test with a where
clause, you might get an acceptable result from something like this:
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 }
}
When I ran it I got the following result:
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)
Notice that the second part of the condition expression shows that your equality expression is false for every item in the list. The third part evaluates the list of booleans assuring that they are all true (which of course, they aren't, ensuring your test fails without having to explicitly assert anything).
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With