java – 不存在的Enum值的单元测试?

一些示例代码首先……

枚举:

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

上一篇:java – 为什么不是PowerMock


下一篇:java – mockito test在运行junit test时没有给出这样的方法错误,但是在运行confugurations中手动添加jar时,它运行良好