Java 最终类内的模拟静态枚举
有一个X类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(){
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(){...}
}
你自己试过吗?