Как получить нулевой анализ затмений для использования assertNotNull из JUnit - PullRequest
0 голосов
/ 04 мая 2019

Как получить анализ нулевого затмения для работы с assertNotNull из jUnit 5. В следующей программе я получаю «Предупреждение Potientiel об отсутствии», несмотря на то, что нет листа, который может быть нулевым из-за строки assertNotNull выше.

Если я изменю 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 голосов
/ 04 мая 2019

Действительно, для JUnit 4 тот факт, что после assertNotNull(o) o не может быть null был жестко задан (отслеживается в упомянутой ошибке и реализовано с помощью этого коммита ).Но для 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());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...