如何将 Or 与 JUnit 一起使用
How to use an Or with a JUnit assume
在 jUnit 测试用例中,我尝试使用一个 Assume 来检查一个条件是否为真或另一个条件是否为真。但是,只要一个条件为真,jUnit 就会有效地停止测试。
在下面列出的示例中,我正在尝试 运行 测试 reason 是否为 null 或者 enumValue 是否在 allowedReasons EnumSet 中。
EnumSet 不允许在其成员中使用空值,我想坚持使用 EnumSet 来模仿实际 class 用来验证其原因的内容。
@RunWith(Parameterized.class)
public static class AllowedExclusionsTest
{
@Parameters
public static Iterable<EntitlementReason> data()
{
final List<EntitlementReason> data = new ArrayList<>();
data.addAll(Arrays.asList(EntitlementReason.values()));
data.add(null);
return data;
}
@Parameter(0)
public EntitlementReason reason;
private final Set<EntitlementReason> allowedReasons =
EnumSet.of(EntitlementReason.INCARCERATED, EntitlementReason.ABSENT_FROM_CANADA);
@Test
public void testAllowedExclusionReason()
{
Assume.assumeThat(reason, Matchers.isIn(allowedReasons));
Assume.assumeThat(reason, Matchers.nullValue());
final ExcludedPeriodFact test = new ExcludedPeriodFact();
test.setExclusionReason(reason);
Assert.assertEquals("getExclusionReason()", reason, test.getExclusionReason());
}
}
事实证明,使用 Matcher anyOf 就可以做到这一点。
@Test
public void testAllowedExclusionReason()
{
Assume.assumeThat(reason, Matchers.anyOf(Matchers.nullValue(), Matchers.isIn(allowedReasons)));
final ExcludedPeriodFact test = new ExcludedPeriodFact();
test.setExclusionReason(reason);
Assert.assertEquals("getExclusionReason()", reason, test.getExclusionReason());
}
在 jUnit 测试用例中,我尝试使用一个 Assume 来检查一个条件是否为真或另一个条件是否为真。但是,只要一个条件为真,jUnit 就会有效地停止测试。
在下面列出的示例中,我正在尝试 运行 测试 reason 是否为 null 或者 enumValue 是否在 allowedReasons EnumSet 中。
EnumSet 不允许在其成员中使用空值,我想坚持使用 EnumSet 来模仿实际 class 用来验证其原因的内容。
@RunWith(Parameterized.class)
public static class AllowedExclusionsTest
{
@Parameters
public static Iterable<EntitlementReason> data()
{
final List<EntitlementReason> data = new ArrayList<>();
data.addAll(Arrays.asList(EntitlementReason.values()));
data.add(null);
return data;
}
@Parameter(0)
public EntitlementReason reason;
private final Set<EntitlementReason> allowedReasons =
EnumSet.of(EntitlementReason.INCARCERATED, EntitlementReason.ABSENT_FROM_CANADA);
@Test
public void testAllowedExclusionReason()
{
Assume.assumeThat(reason, Matchers.isIn(allowedReasons));
Assume.assumeThat(reason, Matchers.nullValue());
final ExcludedPeriodFact test = new ExcludedPeriodFact();
test.setExclusionReason(reason);
Assert.assertEquals("getExclusionReason()", reason, test.getExclusionReason());
}
}
事实证明,使用 Matcher anyOf 就可以做到这一点。
@Test
public void testAllowedExclusionReason()
{
Assume.assumeThat(reason, Matchers.anyOf(Matchers.nullValue(), Matchers.isIn(allowedReasons)));
final ExcludedPeriodFact test = new ExcludedPeriodFact();
test.setExclusionReason(reason);
Assert.assertEquals("getExclusionReason()", reason, test.getExclusionReason());
}