Tag: 模拟代码覆盖

嘲笑Java枚举添加一个值来testing失败的情况

我有一个枚举开关或多或less像这样: 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); } 我想要testing覆盖所有的行,但是由于代码需要处理所有的可能性,所以我不能在交换机中没有相应的case语句的情况下提供一个值。 扩展枚举以添加额外的值是不可能的,只是嘲笑equals方法返回false将不起作用,或者是因为生成的字节码使用幕后的跳转表来转到正确的情况下…所以,我已经认为PowerMock或许可以实现一些黑魔法。 谢谢! 编辑 : 由于我拥有枚举,我以为我可以添加一个方法的值,从而完全避免切换问题; 但是我仍然留下这个问题,因为它仍然很有趣。