首页 > 解决方案 > 使用@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;
    }
}

标签: singletonpowermockito

解决方案


推荐阅读