模拟 Java 枚举以添加值以测试失败案例
2022-08-31 11:33:55
我有一个枚举开关,或多或少像这样:
public static enum MyEnum {A, B}
public int foo(MyEnum value) {
switch(value) {
case(A): return calculateSomething();
case(B): return calculateSomethingElse();
}
throw new IllegalArgumentException("Do not know how to handle " + value);
}
并且我希望测试覆盖所有行,但是由于代码有望处理所有可能性,因此我无法在开关中提供没有相应case语句的值。
扩展枚举以添加额外的值是不可能的,并且只是模拟要返回的 equals 方法也不起作用,因为生成的字节码使用窗帘后面的跳转表来转到正确的大小写...所以我想也许可以用PowerMock或其他东西来实现一些黑魔法。false
谢谢!
编辑:
由于我拥有枚举,我认为我可以向值添加一个方法,从而完全避免切换问题;但我离开了这个问题,因为它仍然很有趣。