JUnit 断言、匹配器和嵌套对象

JUnit Assert, Matchers and nested objects

我有以下合集:

Set<DecisionGroup> parentDecisionGroups

首先,在我的测试中,我需要检查这个集合是否包含两个具有给定 ID 的对象:

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

到目前为止一切顺利...

现在我需要检查 parentDecisionGroups.get(0).getOwnerDecision()(其中 parentDecisionGroup.id == decisionGroup1.getId())等于 decision1parentDecisionGroups.get(1).getOwnerDecision()(其中parentDecisionGroup.id == decisionGroup2.getId()) 等于 decision2

如何用 org.hamcrest.*org.junit.Assert.* 做到这一点?

您可以使用 CombinableMatcherboth(matcher1).and(matcher2) 匹配器。

所以你会得到这样的东西:

assertThat(parentDecisionGroups, hasItem(
               both(hasProperty("id", equalTo(decisionGroup1.getId()))).
               and(hasProperty("ownerDecision", equalTo("decision1"))));