Предположим, у меня есть метод с некоторыми параметрами, аннотированными аннотацией javax @Nonnull.Intellij IDEA предупреждения для аннотации @Nonnull в модульных тестах
public Something supply(@Nonnull SomeObject someObject) {
(...)
if (someObject == null) throw new ValidationException("Required parameter is null");
(...)
}
IDE правильно уведомляет меня, когда я пытаюсь вызвать этот метод с явным пустым аргументом, например:
somethingSupplier.supply(null);
Теперь то, что я хочу сделать, это создать модульное тестирование, который проверяет надлежащее исключение будет сброшен, если по какой-либо причине аргумент, переданный этому методу, окажется нулевым (скажем, это какое-то исключение проверки).
Если я попытаюсь вызвать этот метод, как в приведенном выше примере, IDE предупредит меня о передаче null в @Nonnull ... но это именно то, что я хочу сделать здесь. Я могу аннотировать вызов или метод или даже тестовый класс с помощью @SuppressWarnings("ConstantConditions")
, но он загромождает код, и я не могу получить предупреждение о других непреднамеренных ошибках, которые я делаю в коде.
Итак, вопрос в том, можно ли как-то отключить проверку для @Nonnull в тестовых классах? Или, может быть, я не должен полностью тестировать эти случаи?
Аннотации '@ Nonnull' не означают, что' NullPointerException' всегда вызывается для аргумента 'null'. Фактически, для «частных» методов я рассматривал бы такое требование как пустую трату ресурсов, поскольку проверка должна гарантировать во время компиляции, что «null» никогда не передается методу. Таким образом, NPE * могут возникать как побочный эффект операции при передаче «null», но явные тесты должны быть устаревшими. – Holger
Хорошо, допустим, этот метод является общедоступным. Кроме того, в кубе этого метода в какой-то момент возникает какое-то специальное правило ValidationException, которое может быть важно для меня (для отката или sth, как это). Я отредактировал вопрос. – mareckmareck