Есть ли способ построить комбинированный совпадение Hamcrest, который проверяет объект и свойство этого объекта? - псевдо-код:Как применить совпадение Hamcrest к свойству испытуемого класса?
both(
instanceof(MultipleFailureException.class)
).and(
// pseudo code starts
adapt(
new Adapter<MultipleFailureException, Iterable<Throwable>()
{
public Iterable<Throwable> getAdapter(MultipleFailureException item)
{
return item.getFailures();
}
},
// pseudo code ends
everyItem(instanceOf(IllegalArgumentException.class))
)
)
Справочная информация: У меня есть тест JUnit, который перебирает коллекцию динамических объектов. Ожидается, что каждый объект генерирует исключение при обработке. Исключения собираются. Испытание, как ожидается, до конца с MultipleFailureException, содержащей коллекцию этих выброшенных исключений:
protected final ExpectedException expectation = ExpectedException.none();
protected final ErrorCollector collector = new ErrorCollector();
@Rule
public RuleChain exceptionRules = RuleChain.outerRule(expectation).around(collector);
@Test
public void testIllegalEnumConstant()
{
expectation.expect(/* pseudo code from above */);
for (Object object : ILLEGAL_OBJECTS)
{
try
{
object.processWithThrow();
}
catch (Throwable T)
{
collector.addError(T);
}
}
}