可能重复:
模拟 Java 枚举以添加一个值来测试失败案例
我有一个适用于枚举的 switch 语句。开关的“默认”情况是抛出运行时异常。它的编码是这样的,以捕获有人向枚举添加值但忘记更新 switch 语句的情况。
我想测试这个执行路径,但我正在努力寻找一种方法,而不是将未使用的枚举值放入我的实时代码中。这是对枚举的滥用,还是有一种可接受的方式来编写这个测试?
可能重复:
模拟 Java 枚举以添加一个值来测试失败案例
我有一个适用于枚举的 switch 语句。开关的“默认”情况是抛出运行时异常。它的编码是这样的,以捕获有人向枚举添加值但忘记更新 switch 语句的情况。
我想测试这个执行路径,但我正在努力寻找一种方法,而不是将未使用的枚举值放入我的实时代码中。这是对枚举的滥用,还是有一种可接受的方式来编写这个测试?
我认为你可以做的测试是有一个测试用例,你基本上可以得到你的枚举的所有值,比如
T[] allEnumValues = enumValue.getDeclaringClass().getEnumConstants();
或者
T[] allEnumValues = enumType.values();
然后把每一个都拿出来放在switch
声明中。如果你得到一个异常,你就有问题了。
PS:链接到getEnumConstants()
方法。