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

Tro*_*oyB 4 arrays groovy hamcrest junit4

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

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

当我运行测试时,我得到一个assertionError

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>]
Run Code Online (Sandbox Code Playgroud)

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

我已经很长时间没有使用Groovy或Hamcrest了,所以我确定我丢失了一些东西。谢谢

tim*_*tes 5

您可以使用groovy吗?

assert results.every { it in 1..6 }
Run Code Online (Sandbox Code Playgroud)