JUnit:我应该在assertNotNull之后进行空检查

时间:2016-09-22 09:55:51

标签: junit

我应该在assertNotNull之后进行空检查以避免测试代码中的空指针吗? E.g。

assertNotNull(foo);
if (foo != null) {
    assertNotNull(foo.getBar());
}

或者只是

assertNotNull(foo);
assertNotNull(foo.getBar());

3 个答案:

答案 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。无论是否进行空检查都是一种品味问题。