10
模拟Java枚举以添加值以测试失败情况
我有一个或多或少像这样的枚举开关: 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方法返回false也不会起作用,因为生成的字节码使用了幕后的跳转表来进行适当处理...所以我想使用PowerMock之类的东西也许可以实现一些黑魔法。 谢谢! 编辑: 当我拥有枚举时,我以为我可以在值上添加一个方法,从而完全避免切换问题。但是我仍然要提这个问题,因为它仍然很有趣。