hasItem
TestNG とHamcrestを使用して空のコレクションを一致させるにはどうすればよいですか? これは、1回のテストの結果として得られるものです。
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()}