我正在尝试使用Junit测试类的默认构造函数:
// testing default const
public void testCaesarCipher() {
CaesarCipher c1 = new CaesarCipher();
if (c1 == null) {
assertTrue(false);
} else {
assertTrue(true);
}
}
我收到了#34; Dead code"的错误,我该如何解决这个问题?
答案 0 :(得分:4)
摆脱c1
为空的检查 - 这显然是不可能的。构造函数永远不会返回null
。
你可能想要测试你的构造函数不会抛出异常 - 在这种情况下只是:
public void testCaesarCipher() {
new CaesarCipher();
}
......很好。构造函数在不抛出异常的情况下返回的事实是 all ,测试将在执行时证明。 (测试的存在是编译时检查,当然有一个无参数的构造函数。)
我希望你的其他测试无论如何都需要调用构造函数,在这种情况下你真的认为值得进行这个测试吗?
此外,如果您确实 想要检查某些值是否为空,则应使用:
assertNotNull(c1);
这比if
/ else
更清晰。如果您希望以编程方式失败,只需致电fail()
而不是assertTrue(false);
。
答案 1 :(得分:0)
在该位置,c1
不能是null
。摆脱if
检查。
首先,构造函数调用无法返回null
。使用new ...
将返回非空引用。
其次,请记住构造函数初始化您的对象。您可能想要测试的是初始化是否按预期发生。