如何获取日食空分析以使用来自JUnit的assertNotNull

时间:2019-05-04 14:34:42

标签: java eclipse

如何从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());

1 个答案:

答案 0 :(得分:0)

实际上,对于对于JUnit 4 ,在assertNotNull(o) o之后不能null的事实已被硬编码(在mentioned bugimplemented 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());