如何使用 TestNG 和hasItem
Hamcrest 匹配一个空集合?这是我通过一项测试得到的结果。
java.lang.AssertionError:
Expected: a collection containing email = null phone = null
got: <[]>
这是我的匹配器类:
private static class MyPersonMatcher extends TypeSafeMatcher<Person> {
private final String email;
private final String phone;
public ContactAgentUsageMatcher() {
}
public ContactAgentUsageMatcher(String email, String phone, Integer listingId) {
this.email = email;
this.phone = phone;
}
@Override
public void describeTo(Description description) {
description.appendText("email = ");
description.appendValue(this.email);
description.appendText(" phone = ");
description.appendValue(this.phone);
}
@Override
public boolean matchesSafely(ContactAgentUsage contactAgentUsage) {
if ((this.email == null) && (this.phone == null)) {
return true;
}
else {
return ObjectUtils.equals(this.email, contactAgentUsage.getEmail())
&& ObjectUtils.equals(this.phone, contactAgentUsage.getPhone());
}
}
}
失败的测试是
assertThat(argument.getAllValues(), hasItem(expectedMatcher));
其中expectedMatcher
由数据提供者提供。结果,我不确定要传递什么来匹配这个“空集合”。我正在传递默认构造函数,但我知道这不起作用,因为它使用null
成员创建集合。
这是我的数据提供者的一部分:
{ new ContactAgentUsageMatcher()}