【发布时间】:2014-11-24 15:24:21
【问题描述】:
我将 PowerMock 与 EasyMock 一起使用,想知道如何使用私有构造函数模拟单例?
假设我有以下课程:
public class Singleton {
private static Singleton singleton = new Singleton();
private Singleton() { }
public static Singleton getInstance() {
return singleton;
}
public int crazyServerStuff() { ... }
}
还有一个使用这个的类:
public class Thing {
public Thing() {}
public int doStuff(Singleton s) {
return s.crazyServerStuff() + 42;
}
}
如何模拟crazyServerStuff 方法?
我尝试了以下方法:
@RunWith(PowerMockRunner.class)
@PrepareForTest(Singleton.class)
public class ThingTest extends AndroidTestCase {
@Test
public void testDoStuff() {
MemberModifier.suppress(MemberModifier.constructor(Singleton.class));
Singleton mockSingleton = PowerMock.createMock(Singleton.class);
...
}
}
但我收到错误java.lang.IllegalArgumentException: No visible constructors in class Singleton
有人知道我错过了什么吗?
【问题讨论】:
标签: java unit-testing singleton powermock easymock