В тестовом примере jUnit я пытаюсь использовать Assume, который проверит, является ли условие истинным ИЛИ, если другое условие истинно.Однако jUnit эффективно остановит тест, как только будет выполнено одно условие.
В примере, приведенном ниже, я пытаюсь запустить тест, если причина равна нулю ИЛИ, если enumValue находится в EnumSet allowReasons..
EnumSet не допустит пустое значение в своих членах, и я хотел бы придерживаться EnumSet, чтобы имитировать то, что фактический класс использует для проверки его причины.
@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());
}
}