JUnit Assert, Сопоставители и вложенные объекты

У меня есть следующая коллекция:

Set<DecisionGroup> parentDecisionGroups

прежде всего в моем тесте мне нужно проверить, что эта коллекция содержит два объекта с заданными идентификаторами:

assertThat(parentDecisionGroups, hasItem(hasProperty("id", equalTo(decisionGroup1.getId()))));
assertThat(parentDecisionGroups, hasItem(hasProperty("id", equalTo(decisionGroup2.getId()))));

Все идет нормально...

Сейчас мне нужно проверить это parentDecisionGroups.get(0).getOwnerDecision() (где parentDecisionGroup.id == solutionGroup1.getId()) равно decision1 а также parentDecisionGroups.get(1).getOwnerDecision() (где parentDecisionGroup.id == solutionGroup2.getId()) равно decision2

как это сделать с org.hamcrest.* а также org.junit.Assert.*?

1 ответ

Решение

Вы можете использовать CombinableMatcher в both(matcher1).and(matcher2) спички.

Таким образом, вы получите что-то вроде:

assertThat(parentDecisionGroups, hasItem(
               both(hasProperty("id", equalTo(decisionGroup1.getId()))).
               and(hasProperty("ownerDecision", equalTo("decision1"))));
Другие вопросы по тегам