Перейти к основному содержимому

Утверждают, что необязательный элемент Java имеет определенное значение

· 2 мин. чтения

Задача: Сумма двух чисел

Напишите функцию twoSum. Которая получает массив целых чисел nums и целую сумму target, а возвращает индексы двух чисел, сумма которых равна target. Любой набор входных данных имеет ровно одно решение, и вы не можете использовать один и тот же элемент дважды. Ответ можно возвращать в любом порядке...

ANDROMEDA

1. Обзор

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

В этом коротком руководстве мы рассмотрим, как писать эти утверждения, используя функции как из JUnit , так и из AssertJ .

2. Проверьте, является ли необязательный параметр пустым или нет

Если нам нужно только выяснить, имеет ли значение option значение, мы можем утверждать isPresent или isEmpty .

2.1. Необязательный тест имеет значение

Если необязательный объект имеет значение, мы можем утвердить его для Optional.isPresent :

assertTrue(optional.isPresent());

Однако библиотека AssertJ предоставляет более свободный способ выразить это:

assertThat(optional).isNotEmpty();

2.2. Необязательный тест пуст

Мы можем изменить логику при использовании JUnit:

assertFalse(optional.isPresent());

Кроме того, в Java 11 и выше мы можем использовать Optional.isEmpty :

assertTrue(optional.isEmpty());

Однако AssertJ также предоставляет нам изящную альтернативу:

assertThat(optional).isEmpty();

3. Проверка значения необязательного

Часто мы хотим проверить значение внутри опциона , а не просто наличие или отсутствие.

3.1. Использование утверждений JUnit

Мы можем использовать необязательный.get для предоставления значения, а затем написать утверждение об этом :

Optional<String> optional = Optional.of("SOMEVALUE");
assertEquals("SOMEVALUE", optional.get());

Однако использование get может вызвать исключение, что усложняет понимание ошибки теста. Таким образом, мы можем предпочесть сначала установить, присутствует ли значение:

assertTrue(optional.isPresent());
assertEquals("SOMEVALUE", optional.get());

Однако, Необязательный поддерживает метод equals , поэтому мы можем использовать Необязательный с правильным значением в нем как часть общего утверждения равенства:

Optional<String> expected = Optional.of("SOMEVALUE");
Optional<String> actual = Optional.of("SOMEVALUE");
assertEquals(expected, actual);

3.2. Использование AssertJ

С AssertJ мы можем использовать беглое утверждение hasValue :

assertThat(Optional.of("SOMEVALUE")).hasValue("SOMEVALUE");

4. Вывод

В этой статье мы рассмотрели несколько способов тестирования Optional .

Мы увидели, как встроенные утверждения JUnit можно использовать с isPresent и get . Мы также видели, как Optional.equals предоставляет нам возможность сравнивать необязательные объекты в наших утверждениях.

Наконец, мы рассмотрели утверждения AssertJ, которые дают нам свободный язык для проверки необязательных значений.

Как всегда, код, представленный в этой статье, доступен на GitHub .