它不可能替换Singleton的模拟实现 除非它实现了一个充当其类型的接口。
所以,像一个类:
public class TestSingleton implements TypeReturnable{
public static final TestSingleton INSTANCE = new TestSingleton();
private TestSingleton(){
}
public static getInstance(){
return this.INSTANCE;
}
}
...
public interface TypeReturnable{
TestSingleton getType();
}
或者它是否包括将类型作为参数传递给类的构造。我很困惑如何在实现作为其'类型的接口时替换实现?
答案 0 :(得分:0)
提到的条件是necessary, not sufficient。
为了能够模拟单身人士,您需要:
TestSingleton.getInstance()
)访问单例
答案 1 :(得分:0)
我会写
public enum Singleton implements ISingleton {
INSTANCE;
}
通过依赖注入传递单例。
MyTested mt = new MyTested(Singleton.INSTANCE);
然而要测试这个你可以做
ISongleton mockSingleton = createMock(ISingleton.class)
MyTested mt = new MyTested(mockSingleton);
我建议你避免