首先提供一些示例代码...
枚举:
public enum TestEnum {
YES,
NO
}
一些代码:
public static boolean WorkTheEnum(TestEnum theEnum) {
switch (theEnum) {
case YES:
return true;
case NO:
return false;
default:
// throws an exception here
}
}
问题:
我从其他开发人员的不同代码中导入了TestEnum。因此它实际上可以改变。对于这种情况,我想要一个单元测试来实际检查该不存在的值。但是我根本不知道如何使用Mockito和JUnit做到这一点。
这部分当然不起作用:
@Test(expected=Exception.class)
public void DoesNotExist_throwsException() throws Exception {
when(TestEnum.MAYBE).thenReturn(TestEnum.MAYBE);
WorkTheEnum(TestEnum.MAYBE);
}
我找到了一个使用PowerMock的示例,但无法使其与Mockito一起使用。
有任何想法吗?
最佳答案
一个简单的怎么样:
Set<String> expected = new HashSet<> (Arrays.asList("YES", "NO"));
Set<String> actual = new HashSet<>();
for (TestEnum e : TestEnum.values()) actual.add(e.name());
assertEquals(expected, actual);
(使用HashSet而不是ArrayList,因为顺序无关紧要)