【发布时间】:2013-04-03 01:43:45
【问题描述】:
我不确定如何模拟枚举单例类。
public enum SingletonObject{
INSTANCE;
private int num;
protected setNum(int num) {
this.num = num;
}
public int getNum() {
return num;
}
我想在上面的例子中存根 getNum(),但我不知道如何模拟实际的 SingletonObject 类。我认为使用 Powermock 来准备测试会有所帮助,因为枚举本质上是最终的。
//... rest of test code
@Test
public void test() {
PowerMockito.mock(SingletonObject.class);
when(SingletonObject.INSTANCE.getNum()).thenReturn(1); //does not work
}
这是使用 PowerMockMockito 1.4.10 和 Mockito 1.8.5。
【问题讨论】:
-
感谢 Martin,我通读了该线程,它看起来像是一种使用非枚举方式实现单例的方法,并且我能够使用该方法正确使用模拟。但是,有没有办法模拟一个枚举单例类?从我收集到的信息来看,枚举单例类是在 java 1.5 之后声明单例的推荐方法。
-
单身人士是邪恶的 :)
标签: java enums singleton mockito powermock