Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 最终类内的模拟静态枚举_Java_Mockito_Powermock - Fatal编程技术网

Java 最终类内的模拟静态枚举

Java 最终类内的模拟静态枚举,java,mockito,powermock,Java,Mockito,Powermock,有一个X类 public final class X { private X() {} ... public static enum E { thingA("1"), thingB("0") public boolean isEnabled(){...} } ... } 在另一个类中,有一个方法M public class AnotherClass{ public void M(){

有一个X类

public final class X {
    private X() {}
    ...
    public static enum E {
        thingA("1"),
        thingB("0")

        public boolean isEnabled(){...}
    }
    ...
}
在另一个类中,有一个方法M

public class AnotherClass{

    public void M(){
        if (E.thingB.isEnabled()) {
            doSomething();
        }
    }
    ...
}
我想测试M方法,是否可以使用mockito/powermockito if中的mock语句。做这样的事

 when(E.thingB.isEnabled()).thenReturn(true)?

无论枚举是否嵌套,都不能创建或模拟枚举的新实例,更重要的是,它打破了所有枚举实例都在枚举中声明的假设

枚举类型除了由其枚举常量定义的实例外,没有其他实例。尝试显式实例化枚举类型是编译时错误。()

由于枚举的所有实例在编译时都是已知的,并且这些实例的所有属性都是可预测的,通常您可以只传入一个符合需要的实例,而无需模拟任何内容。如果要接受具有这些属性的任意实例,请让枚举实现接口

public interface I {
    boolean isEnabled();
}

public enum E implements I {  // By the way, all enums are necessarily static.
    thingA("1"),
    thingB("0");

    public boolean isEnabled(){...}
}

你自己试过吗?