Проверка на null с assertThat в Hamcrest: правильный код
Пройдите тест, узнайте какой профессии подходите
Быстрый ответ
Чтобы выполнить быструю проверку на null
, используйте метод assertThat
из библиотеки Hamcrest и поставьте nullValue()
:
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.nullValue;
// Когда наша ожидаемая переменная — "ничего"!
assertThat(myObject, nullValue());
Элегантная проверка на null
Давайте рассмотрим, как элегантно использовать свойства библиотеки Hamcrest для проверки на null
.
Элегантные методики проверки на null
С помощью Hamcrest наши тесты становятся более выразительными и понятными, как будто вы кодировали, вдохновленные Шекспиром! 🎭
Сравнение JUnit и Hamcrest при проверке на null
assertNull
из JUnit предоставляет простой механизм проверки:
import static org.junit.Assert.assertNull;
// Производим проверку на любой null!
assertNull(myObject);
nullValue()
от Hamcrest придает тестированию больше жизни:
// Это словно ожидание абсолютно пустой коробки
assertThat(myObject, is(nullValue()));
Применение is
в сочетании с nullValue()
делает утверждение особенным и интуитивно понятным!
Исследуем nullValue()
nullValue()
— это один из основных матчеров в Hamcrest. Он делает ваши тестовые сценарии глубже, основываясь на принципах поведенческого тестирования (BDD).
Противоположность null: утверждение о non-null
Противоположностью null является non-null. Как с этим работает Hamcrest?
import static org.hamcrest.Matchers.notNullValue;
// Нет лучшего способа заявить "Я существую!", чем этот!
assertThat(myObject, is(notNullValue()));
Это утверждение говорит нам, что объект должен быть не null
– небольшой переворот ситуации!
Визуализация
Воспринимайте проверку на null
с использованием Hamcrest в Java, как посмотреть в пустой почтовый ящик (📭):
// Мой почтовый ящик — словно отголосок тишины
assertThat(mailbox.peek(), is(nullValue()));
📭 == 📬?
Сюжетна линия фильма о тестировании с Hamcrest:
mailbox.peek()
– это проверка на наличие новой почты.is(nullValue())
ожидает отсутствие писем.- Если
null
(нет писем), тест пройден – прекрасно, ящик пуст. 📭 - Если
non-null
(есть письмо), тест провален – ох, неожиданно, пришло письмо! 💌
// Тестовый сценарий на проверку на null
Assert.assertThat(mailbox.peek(), is(nullValue())); // Ящик должен быть пуст!
Визуализация символов:
- 📭: Ничего нет (null)
- 💌: Важно, письмо (non-null)
- ✅: Зрители довольны (пусто, как и предполагалось)
- ❌: Просадка в сюжете (неожиданный контент)
Пишите код, будто это бестселлер
Hamcrest используется не только для определения null
, но и для более точного выражения ваших намерений:
List<String> myList = getItems();
// Подход JUnit – без излишеств
assertTrue(myList.isEmpty());
// Подход Hamcrest – внимание к деталям
assertThat(myList, is(empty()));
Hamcrest полностью приоткрывает замысел ваших утверждений, подобно таинственному детективу. 🕵️
От вашего мозга до IDE
Выбор набора инструментов для формирования утверждений может отразить нюансы ваших намерений в коде, поэтому выбирать следует вдумчиво!
Оттенок Kotlin
Для поклонников языка Kotlin, Hamcrest будет ощущаться как дома:
import org.hamcrest.MatcherAssert.assertThat
import org.hamcrest.Matchers.`is`
import org.hamcrest.Matchers.nullValue
val myVal: String? = null
// Kotlin вместе с Hamcrest:
assertThat(myVal, `is`(nullValue()))
Фрагменты кода – ваш лексический запас
Важно помнить, что также как и в обучении языкам, код требует четкой формы для понимания. Используйте теги <code>
, чтобы избежать путаницы с зарезервированными словами.
Метод AssertJ
AssertJ представляет собой альтернативный метод формирования "плавных" утверждений:
import static org.assertj.core.api.Assertions.assertThat;
List<String> myList = getItems();
// AssertJ делает каждго из нас поэтом
assertThat(myList).isEmpty();
AssertJ, так же как и Hamcrest, обогащает утверждения естественностью языка, но использует для этого другой подход.
Полезные материалы
- Matchers (Hamcrest) — документация по матчерам Hamcrest, основным компонентам ваших утверждений.
- JUnit 5 User Guide — источник всего необходимого для написания тестов в JUnit 5.
- AssertJ – fluent assertions java library — для тех, кто предпочитает гибкие утверждения в Java.
- Newest 'assertthat' Questions – Stack Overflow — реальные примеры и обсуждения использования
assertThat
на Stack Overflow. - Assert (JUnit API) — обзор истории использования утверждений в JUnit 4.
- A Unit Tester’s Guide to Mockito | Toptal® — подробное руководство по Mockito и её матчерам для эффективного модульного тестирования.
- MatcherAssert (Hamcrest) — подробный обзор класса MatcherAssert и метода
assertThat
.