xen*_*ide 5 java junit unit-testing hamcrest junit4
给定一个对象列表,我想测试它们是否以正确的顺序返回,但我不想断言整个对象。
例如,我想验证它们是否按顺序排列
id 1,
id 2,
id 3,
Run Code Online (Sandbox Code Playgroud)
或者在另一种情况下
date mostRecent
date older
date oldest
Run Code Online (Sandbox Code Playgroud)
或者在另一种情况下
enum ValueA
enum ValueB
enum ValueC
Run Code Online (Sandbox Code Playgroud)
基本上我想测试我指定的排序是否正确通过,但对象上只有一个属性实际上会影响这一点,所以我想用某些变体来指定我的测试hasFirstItem( withPropertyEqualTo ... has secondItem( withPropertyEqualTo
我知道我可以写
assertEquals( property, list.get(0).id )
assertEquals( property, list.get(1).id )
Run Code Online (Sandbox Code Playgroud)
但我宁愿做一些事情,使失败更加明显,因为这是一个排序问题,也许是声明性的,立即测试整个集合。这可能吗?
您应该能够hasProperty像这样使用 hamcrest 的匹配器:
public class Foo {
private String a;
public Foo(String a) {
this.a = a;
}
public Object getStr() {
return a;
}
public static void main(String[] args) {
List<Foo> l = Arrays.asList(new Foo("a"), new Foo("b"));
Assert.assertThat(l, contains(hasProperty("str", equalTo("a")),
hasProperty("str", equalTo("b"))));
}
}
Run Code Online (Sandbox Code Playgroud)
其中“str”是您要检查的属性的名称。请注意,这仅适用于getXxx旨在测试 JavaBean 的命名方法。
| 归档时间: |
|
| 查看次数: |
5724 次 |
| 最近记录: |