首先提供一些示例代码...

枚举:

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,因为顺序无关紧要)

09-05 09:21