【问题标题】:How to assert that every item in collection is within range如何断言集合中的每个项目都在范围内
【发布时间】:2012-11-10 20:27:43
【问题描述】:

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

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

当我运行测试时,我得到一个 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>]

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

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

【问题讨论】:

    标签: arrays groovy junit4 hamcrest


    【解决方案1】:

    你能用 groovy 吗?

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

    【讨论】:

    • 是的,我相信这行得通。我对 groovy 还是很陌生,我正在尝试同时整合一些额外的工具。所以在这种情况下,简单的常规断言给出了我正在寻找的结果。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-09-24
    • 2013-07-13
    • 2014-12-19
    • 2021-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多