如何从jUnit 5中获取eclipse空分析以与assertNotNull一起使用。在以下程序中,尽管由于上面的assertNotNull行而导致叶子不可能为空,但在以下程序中却得到了“ Potientiel空警告”。 / p>
如果我将assertNotNull更改为assert(leaf!= null),警告消失。
根据此(旧)链接,eclipse应该支持使用junit断言,并且我已启用“启用基于注释的空分析”
https://bugs.eclipse.org/bugs/show_bug.cgi?id=382069
LeafNode leaf=getLeafMayBeNull(); assertNotNull(leaf);
assertEquals(Long.valueOf(42),leaf.getLong());
答案 0 :(得分:0)
实际上,对于对于JUnit 4 ,在assertNotNull(o)
o
之后不能null
的事实已被硬编码(在mentioned bug和implemented via this commit)。但是对于JUnit 5 ,这还尚未完成(请参见org.eclipse.jdt.internal.compiler.lookup.TypeConstants
中的org.junit.Assert
常量,但没有org.junit.jupiter.api.Assertions
的常量) 。请将此报告给Eclipse。
解决方法,您可以使用以下实用程序方法来避免潜在的空指针访问问题:
static <T> T notNull(@Nullable T o) {
assertNotNull(o);
if (o == null) throw new RuntimeException();
return o;
}
使用此实用程序方法,给定的代码段如下所示:
LeafNode leaf = notNull(getLeafMayBeNull());
assertEquals(Long.valueOf(42),leaf.getLong());