Lombok @NonNull не применяет проверку типа возврата - PullRequest
0 голосов
/ 25 июня 2019

IDE: Intellij

Я использую аннотацию NonNull от Lombok для автоматической генерации проверок нулевого указателя и выдачи исключений для аргументов метода и типов возврата.

При написании модульных тестов метод 'null' Аргументы выдают исключение, но типы возвращаемых значений NULL не выдают исключения.

import lombok.NonNull;
public @NonNull String function( @NonNull String input) {
    return null;
}

Следующий тест не пройден:

@Test
public void 
whenReturnTypeIsNull_ThenIllegalArgumentExceptionIsThrown(){
    assertThrows(IllegalArgumentException.class, ()-> testClass.function() );
}

с сообщением:

Expected java.lang.IllegalArgumentException to be thrown, but nothing was thrown

1 Ответ

1 голос
/ 25 июня 2019

В документации Lombok в документации четко указано, что аннотация NonNull позволяет генерировать пустые проверки для аргументов конструктора и метода:

Вы можете использовать @NonNull в параметре метода или конструктора, чтобы lombok сгенерировал для вас оператор проверки нуля.

Таким образом, вы должны программно проверять возвращаемые инварианты значений, в том числе и ненулевые.

...