Junit:测试默认构造函数,死代码警告?

时间:2014-03-16 21:34:19

标签: java junit

我正在尝试使用Junit测试类的默认构造函数:

// testing default const
    public void testCaesarCipher() {
        CaesarCipher c1 = new CaesarCipher();
        if (c1 == null) {

            assertTrue(false);

        } else {
            assertTrue(true);
        }
    }

我收到了#34; Dead code"的错误,我该如何解决这个问题?

2 个答案:

答案 0 :(得分:4)

摆脱c1为空的检查 - 这显然是不可能的。构造函数永远不会返回null

可能想要测试你的构造函数不会抛出异常 - 在这种情况下只是:

public void testCaesarCipher() {
    new CaesarCipher();
}

......很好。构造函数在不抛出异常的情况下返回的事实是 all ,测试将在执行时证明。 (测试的存在是编译时检查,当然有一个无参数的构造函数。)

我希望你的其他测试无论如何都需要调用构造函数,在这种情况下你真的认为值得进行这个测试吗?

此外,如果您确实 想要检查某些值是否为空,则应使用:

assertNotNull(c1);

这比if / else更清晰。如果您希望以编程方式失败,只需致电fail()而不是assertTrue(false);

答案 1 :(得分:0)

在该位置,c1不能是null。摆脱if检查。

首先,构造函数调用无法返回null。使用new ...将返回非空引用。

其次,请记住构造函数初始化您的对象。您可能想要测试的是初始化是否按预期发生。