Ruben's answer использованием allOf
является лучшим способом объединить matchers, но вы также можете написать свой собственный Искатель с нуля на основе BaseMatcher или TypeSafeMatcher:
Matcher<Class> matcherName = new TypeSafeMatcher<Class>() {
@Override public boolean matchesSafely(Class object) {
return expected1.equals(object.getPropertyName())
&& expected2.equals(object.getPropertyName2());
}
};
Хотя вы получаете неограниченную власть, чтобы написать произвольный код Сличителя, не полагаясь на отражении (кстати, что hasProperty
делает), вам нужно будет написать свои собственные версии describeTo
и describeMismatch
(Safely
), чтобы получить исчерпывающие сообщения об ошибках, которые hasProperty
определяет и что allOf
будет собирать для вас.
Возможно, вам будет полезно использовать allOf
для простых случаев, связанных с несколькими простыми помощниками, но подумайте о том, чтобы написать свое собственное, если оно соответствует большому количеству свойств или при реализации сложной условной логики.
Да, allOf хороший способ, но я не могу использовать assertThat мне нужно проверить, если метод объекта выполнения с ожидаемым параметром, как: 'проверить (макет) .method (argThat (matcherName));' – Szympek
@Szympek 'samePropertyValuesAs' также является' Matcher', который вы можете назначить переменной: 'Matcher matcherName = samePropertyValuesAs (expectedBean)' –
Ruben