我应该在assertNotNull
之后进行空检查以避免测试代码中的空指针吗? E.g。
assertNotNull(foo);
if (foo != null) {
assertNotNull(foo.getBar());
}
或者只是
assertNotNull(foo);
assertNotNull(foo.getBar());
答案 0 :(得分:3)
你做得对......
assertNotNull(foo);
assertNotNull(foo.getBar());
如果您之前已经这样做,则不需要设置另一个条件来检查相同的条件。
答案 1 :(得分:2)
使用assertX
方法确保实际断言条件。因此,通过使用assertNotNull
,您可以确保某些内容不为空。
正确的方法是:
assertNotNull(foo);
assertNotNull(foo.getBar());
如果您开始深入研究assertNotNull
方法,您会看到此调用:
// First call
static public void assertNotNull(Object object) {
assertNotNull(null, object);
}
// Second call
static public void assertNotNull(String message, Object object) {
assertTrue(message, object != null);
}
// Third call
static public void assertTrue(String message, boolean condition) {
if (!condition) {
fail(message);
}
}
引用assertTrue文档:
断言条件为真。如果它没有使用给定的消息抛出AssertionError。
结论,在断言非空值之后你不必进行空值检查,因为junit正在为你处理这个问题
答案 2 :(得分:0)
您甚至不需要进行第一次空检查。如果NullPointerException
为空,则测试将失败并显示foo
。无论是否进行空检查都是一种品味问题。