【发布时间】:2015-08-16 15:03:18
【问题描述】:
给定一个对象列表,我想测试它们是否以正确的顺序返回,但我不想断言整个对象。
例如,我想验证它们是否按顺序排列
id 1,
id 2,
id 3,
或者其他情况
date mostRecent
date older
date oldest
或者在另一种情况下
enum ValueA
enum ValueB
enum ValueC
基本上我想测试我指定的排序是否正确通过,但对象上只有一个属性实际上会影响这一点,所以我想用hasFirstItem( withPropertyEqualTo ... has secondItem( withPropertyEqualTo的一些变体指定我的测试
我知道我会写
assertEquals( property, list.get(0).id )
assertEquals( property, list.get(1).id )
但我宁愿做一些事情,使失败更加明显,因为它是一个排序问题,也许是声明式的,一次测试整个集合。这可能吗?
【问题讨论】:
-
你可以使用 Java 8 吗?如果是这样,我可能会将属性函数映射到列表上并断言结果。
-
JUnit/Hamcrests
assertThat(actual, contains(item1, item2, ...));应该这样做。你甚至可以编写自己的匹配器来做你想要的检查
标签: java unit-testing junit junit4 hamcrest