我的代码中需要一个单例.我用Java实现它,它运行良好.我这样做的原因是为了确保在多个环境中,这个类只有一个实例.
但现在我想用Unit测试在本地测试我的Singleton对象.出于这个原因,我需要模拟这个Singleton的另一个实例(来自另一个设备的对象).那么有可能第二次实例化Singleton用于测试目的还是我必须嘲笑它?
我不确定,但我认为可以使用不同的类加载器?
Sjo*_*erd 17
传统上,Singleton创建自己的实例,并且只创建一次.在这种情况下,无法创建第二个实例.
如果使用依赖注入,则可以让框架为您创建单例.单例不会防止其他实例(即它有一个公共构造函数),但依赖注入框架只实例化一个实例.在这种情况下,您可以创建更多用于测试的实例,并且您的对象不会被单例代码混乱.
您可以使用反射调用单例类的私有构造函数来创建类的新实例.
class MySingleton {
private MySingleton() {
}
}
class Test {
public void test() throws Exception {
Constructor<MySingleton> constructor = MySingleton.class.getConstructor();
constructor.setAccessible(true);
MySingleton otherSingleton = constructor.newInstance();
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8473 次 |
| 最近记录: |