我有以下代码:
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,它没有。
这是一个错误还是我错了?
答案 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会更好,所以无论如何你都不会遇到这个问题......