Eclipse的空检查分析是否被JUnit混淆了'失败'?

时间:2016-12-08 14:14:56

标签: java eclipse junit

我有以下代码:

Object foo = someMethod();
if (foo == null) 
    org.junit.Assert.fail("OMG what a horrible error!");
foo.doSomeStuff();

但Eclipse(Neon,M4.6)似乎无法检测到org.junit.Assert.fail方法将终止执行流程,并抱怨最后一行包含一个可能的NPE,它没有。

这是一个错误还是我错了?

3 个答案:

答案 0 :(得分:2)

Eclipse有一个内置的列表,列出了一些它知道不会返回的方法。这包括JUnit assertNotNull,但不包括fail

Eclise bug 382069描述了这种支持。

答案 1 :(得分:1)

Eclipse应该怎么知道?就它而言,这只是另一个图书馆电话。

如果您像这样使用它,它应该没有NullPointerException:

Object foo = someMethod();
if (foo == null) {
   org.junit.Assert.fail("Jesus Christ what a horrible error!");
} else {
   foo.doSomeStuff();
}

答案 2 :(得分:1)

好吧,如果Assert.fail()不会抛出异常,那么你就会有一个NPE。但为什么Eclipse / Java会知道这一点。

顺便说一句,使用assertNotNull会更好,所以无论如何你都不会遇到这个问题......