Java 扩展/模拟枚举

Java 扩展/模拟枚举,java,enums,junit4,Java,Enums,Junit4,可能重复: 我有一个对枚举有效的switch语句。开关的“默认”情况是引发运行时异常。它是这样编码的,以防止有人向枚举添加值,但忘记更新switch语句 我想测试这个执行路径,但我正在努力找到一种方法,在不将未使用的枚举值放入实时代码的情况下进行测试。这是对枚举的误用,还是有一种公认的编写此测试的方法?我认为您可以做的是测试一个测试用例,在这个测试用例中,您基本上可以获得枚举的所有值,如 T[] allEnumValues = enumValue.getDeclaringClass().get

可能重复:

我有一个对枚举有效的switch语句。开关的“默认”情况是引发运行时异常。它是这样编码的,以防止有人向枚举添加值,但忘记更新switch语句


我想测试这个执行路径,但我正在努力找到一种方法,在不将未使用的枚举值放入实时代码的情况下进行测试。这是对枚举的误用,还是有一种公认的编写此测试的方法?

我认为您可以做的是测试一个测试用例,在这个测试用例中,您基本上可以获得枚举的所有值,如

T[] allEnumValues = enumValue.getDeclaringClass().getEnumConstants();

然后把每一个放在
开关
语句中。如果你遇到异常,你就有问题了


PS:getEnumConstants()方法。

这不是我想要的,但却是一种有趣的方法。实际上,我想传入一个在switch语句中不存在的枚举值,以便证明RTE被抛出。(我的客户非常热衷于代码覆盖率…)请看这个:您是否倾向于使用任何类似Mockito的模拟框架?Mokito不能很快做到这一点-但看起来PowerMock可能是答案-我会关注它。ThanksPowerMock很有魅力——非常感谢你的建议。答案中没有这个,所以请投赞成票。
T[] allEnumValues = enumType.values();