如何断言集合中的每个项目都在范围内

时间:2012-11-10 20:27:44

标签: arrays groovy junit4 hamcrest

我有一个Groovy数组,它将获得一组随机整数值。我想声明数组中的每个项都有一个给定范围内的值。我正在尝试使用Hamcrest Matchers。所以我的测试看起来像这样:

@Test
void testShouldReturnArrayOfStats(){
    def results = pg.rollStats()
    assertThat results, everyItem(both(greaterThan(0)).and(lessThanOrEqualTo(6)))
}

当我运行测试时,我得到一个断言错误

java.lang.AssertionError: Expected: every item is (a value greater than <0> and a value less than or equal to <6>)
 but: was [<6>, <3>, <5>, <4>, <3>, <2>]

我已尝试过一些变化,但我没有通过测试。只是通过查看错误的“但是:”部分我可以看到所有6个值都满足要求,但测试仍然失败。

我没有长时间使用Groovy或Hamcrest,所以我确信我错过了一些东西。 感谢

1 个答案:

答案 0 :(得分:5)

你能使用groovy吗?

assert results.every { it in 1..6 }