【发布时间】:2016-10-18 10:18:12
【问题描述】:
我有一个对象集合(比如说Cars)。每辆车都有一个Company 类型的属性,可以通过其id 来识别。
现在我想断言我收藏中的所有汽车都属于同一家公司,即每辆汽车的公司都与其他公司相同。
请注意,在我的测试中我事先并不知道公司 ID 的值。我不在乎价值,唯一重要的是它在所有汽车中都是一样的。
我会想象这样的事情:
assertThat(allCars, Matchers.equalAmongAll(hasProperty("company", hasProperty("id"))));
编辑:只有 Java 7 可用,不能使用 Java 8 表达式
【问题讨论】:
-
为什么不简单地遍历
allCars集合? -
当然这是一个选项,但它有点笨拙(尤其是在更深一层时),我想知道使用 Hamcrest 提供的 fluent API 是否有更优雅的方式。
-
UnitTest 的第二个最重要的事情是(在可读性之后)它们由于正确的原因而失败。手工制作的 Matcher 可能会增强可读性,但会在意外情况下导致失败,这将是失败的错误原因...
标签: java testing junit hamcrest