Junit:如何使用Get Class Instance断言

时间:2016-12-20 19:49:45

标签: java junit

我有以下课程BridgeMaps

public class BridgeMaps {
    private static final BridgeMaps INSTANCE = new BridgeMaps();

    private Map<String, String> docTypeMap;
    private Map<String, String> docBaseMap;
    private Map<String, String> tempFolderIdMap;
    //....

    //constructor for the class to initialize the Maps      
    private BridgeMaps(){
        docTypeMap = new HashMap<String, String>();
        docBaseMap = new HashMap<String, String>();
        docBaseMap = new HashMap<String, String>();
        //....rest of the code

    }


    //Get the class instance 
    //@return BridgeMaps - Returns the BridgeMaps Instance
    public static final BridgeMaps get(){
        return INSTANCE;
    }
}

我将Junit测试用例写成:

public class BridgeMapsTest {

    private static BridgeMaps bridgeMaps;
    @BeforeClass
    public static void setUpBeforeClass() throws Exception {
        Constructor<BridgeMaps> b = BridgeMaps.class.getDeclaredConstructor(new Class[0]);
        b.setAccessible(true);
        bridgeMaps = b.newInstance(new Object[0]);
    }

    @Test
    public void testGet() {
        //("Not yet implemented");
    }
}

但我不确定该断言:

assertWhat(bridgeMaps.get());

如何在testGet()方法中断言类的实例?

任何帮助将不胜感激。谢谢。

2 个答案:

答案 0 :(得分:1)

我建议使用assertThat。

此断言适用于Hamcrest匹配器,如notNullValue()

允许你像这样重写你的断言:

assertThat(BridgesMap.get(), notNullValue(BridgeMaps.class))

此代码断言调用静态get方法将返回非null值。

换句话说:此调用将触发ctor,并运行该背后的所有代码。你可以放心,你的单身是“真实的”,而不是空的;在访问时分别导致异常。

答案 1 :(得分:0)

使用assertSame(a,b)

  

断言两个对象引用同一个对象。

还要考虑只做assertSame(bridgeMaps.get(), bridgeMaps.get())而不是那个反思性的pokery。