相关疑难解决方法(0)

模拟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);
}
Run Code Online (Sandbox Code Playgroud)

并且我希望测试涵盖所有行,但由于代码应该处理所有可能性,因此我无法在交换机中提供没有相应case语句的值.

扩展枚举以添加额外的值是不可能的,只是模拟返回的equals方法false将无法工作,因为生成的字节码使用窗帘后面的跳转表来找到正确的情况......所以我想也许用PowerMock可以实现一些黑魔法.

谢谢!

编辑:

由于我拥有枚举,我认为我可以只为值添加一个方法,从而完全避免切换问题; 但是我要离开这个问题,因为它仍然很有趣.

java enums unit-testing code-coverage mocking

50
推荐指数
3
解决办法
5万
查看次数

标签 统计

code-coverage ×1

enums ×1

java ×1

mocking ×1

unit-testing ×1