singleton - 使用@RunWith(PowerMockRunner.class) 时是否有方法保证创建的对象是单例的
问题描述
我在我的测试类中添加了@RunWith(PowerMockRunner.class),并且在每个测试用例中创建一个对象,并且创建的对象不是预期的。那么我能做些什么来保证创建的对象是单例的
@RunWith(PowerMockRunner.class)
public class DemoConfigTest1 {
@Test
public void testDemo1() {
System.err.println("testDemo1 single object signature: " + SingleObject.getINSTANCE().getRandom());
}
}
@RunWith(PowerMockRunner.class)
public class DemoConfigTest2 {
@Test
public void testDemo2() {
System.err.println("testDemo2 single object signature: " + SingleObject.getINSTANCE().getRandom());
}
}
public class SingleObject {
private static volatile SingleObject INSTANCE = null;
private String random;
private SingleObject() {
random = String.valueOf(new Random().nextInt(1000));
}
public static SingleObject getINSTANCE() {
if (INSTANCE == null) {
synchronized (SingleObject.class) {
if (INSTANCE == null) {
INSTANCE = new SingleObject();
}
}
}
return INSTANCE;
}
public String getRandom() {
return random;
}
}
解决方案
推荐阅读
- javascript - 在角度 9 中创建具有动态 styleUrls 的组件
- linux - 如何在 ssh 隧道上搭建脚手架
- mysql - 服务器上的Nodejs mysqldump
- python - load_weights 返回一个不可调用的值
- reactjs - 如何使用反应测试库测试材料 ui 自动完成
- ada - 可访问性级别和本地过程变量生存期
- vue.js - 当用户取消全选时,Vue观察者检查了所有复选框?
- python - 我可以使用哪个 linux 发行版 docker 映像连接到 MySQL v8.0.12?
- javascript - Mongoose - 在“预”保存挂钩中从虚拟节点访问数据
- javascript - 如何将元素从数组中的一个位置移动到另一个位置?