可能重复:
Mocking Java enum to add a value to test fail case扩展/惩戒枚举
我有一个关于枚举工作的switch语句。交换机的“默认”情况是引发运行时异常。它的编码这样的陷阱,其中有人将一个值枚举,但忘记更新switch语句的情况。
我想测试这个执行路径,但我在努力寻找这样做没有把未使用的枚举值到我的真实代码的方式。这是滥用枚举,还是有一个可接受的写作这种测试的方式?
可能重复:
Mocking Java enum to add a value to test fail case扩展/惩戒枚举
我有一个关于枚举工作的switch语句。交换机的“默认”情况是引发运行时异常。它的编码这样的陷阱,其中有人将一个值枚举,但忘记更新switch语句的情况。
我想测试这个执行路径,但我在努力寻找这样做没有把未使用的枚举值到我的真实代码的方式。这是滥用枚举,还是有一个可接受的写作这种测试的方式?
我在想什么,你可以做测试,这是有一个测试用例,你基本上得到您的枚举的所有值一样
T[] allEnumValues = enumValue.getDeclaringClass().getEnumConstants();
或
T[] allEnumValues = enumType.values();
,然后把每一个和把它放在switch
声明中。如果您遇到异常,您有问题。
PS:Link到getEnumConstants()
方法。
这是不太我想要的东西,但一个有趣的方法。我实际上想要传递一个在switch语句中不存在的枚举值,以便我可以证明RTE被抛出。 (我的客户非常热衷于代码覆盖.....) – DaveH
请看看这个:http://stackoverflow.com/questions/5323505/mocking-java-enum-to-add-a-value-to-test-fail-case – exception
你是否倾向于使用任何嘲讽框架像Mockito? – exception
Mokito不能做它afaik - 但它看起来像PowerMock可能是答案 - 我会看着它。由于 – DaveH