Улучшение проверки наличия подстроки в jUnit: более кратко
Быстрый ответ
Для проверки, содержится ли подстрока в строке, можно воспользоваться assertTrue
и методом String's contains
. Применим на практике:
import static org.junit.Assert.assertTrue;
assertTrue("Подстрока не найдена. Возможно, вы ошиблись?",
"Проверяемая строка".contains("Искомая подстрока"));
В случае успеха, если "Проверяемая строка" действительно содержит в себе "Искомая подстрока", тест пройдет. Если нет – появится сообщение об ошибке.
Соответствия Hamcrest: Алхимия JUnit
Пайперы мира JUnit объединены в общество под названием Hamcrest
. Их специализация – создание соответствий (matchers)
, которые упрощают и облагораживают процесс написания тестов.
import static org.hamcrest.CoreMatchers.containsString;
import static org.hamcrest.MatcherAssert.assertThat;
assertThat("Проверяемая строка", containsString("Искомая подстрока"));
С помощью статических импортов, мы держим наш код аккуратным, а экран – свободным от хаоса.
AssertJ Magic: Эстетика кода в ваших руках
Если Вам близок более изящный стиль, AssertJ станет вашим постоянным союзником:
import static org.assertj.core.api.Assertions.assertThat;
assertThat("Проверяемая строка").contains("Искомая подстрока");
Библиотека AssertJ знаменита своей читабельностью и понятностю API, обернув утверждения сложнейшим искусством.
Настраиваемые Сообщения об Ошибках: Инструменты Отладки
В случае неудачи теста, без дополнительной информации вы рискуете оказаться как моряк в шторм. В этом вам помогут сообщения ошибок, дополненные подробностями:
import static org.junit.Assert.assertTrue;
assertTrue("Ожидалось нахождение подстроки 'Искомая подстрока' в строке 'Проверяемая строка'. Ошибка не там, где думали!",
"Проверяемая строка".contains("Искомая подстрока"));
Такое сообщение позволит вам быстро оценить ситуацию и вернуться к отладке вашего кода.
Визуализация
Вашей строки можно представить как карту сокровищ (💎), где подстрока — это ключ к богатству:
Ваша Строка (📜): "Здесь глубоко в земле спрятано сокровище"
Ваша Подстрока (💎): "сокровище"
assertContains
: Ваш археологический инструмент
🔍 Содержится ли слово "сокровище" в строке?
| Ищем treasure с помощью assertContains |
| ------------------------------- |
| 📜📍💎: Успех! |
Функция утверждения быстро обнаруживает СОКРОВИЩЕ (подстроку), спрятанное в КАРТЕ (строке), работая как надёжная лопата при поисках. 🗺️💡
Изучение Других Библиотек: Путешественник в коде
Всегда стоит обратить внимание на другие замечательные библиотеки для тестирования, включая fest-assert-2.x и assertj. Они расширяют ваши возможности в тестировании:
// Используем Fest Assert:
import static org.fest.assertions.Assertions.assertThat;
assertThat("Проверяемая строка").contains("Искомая подстрока");
// "Искомая подстрока" найдена — добываем золото!
// Воспользуемся AssertJ для коллекций:
import static org.assertj.core.api.Assertions.assertThat;
assertThat(списокСтрок).contains("Желаемая строка");
// "Желаемая строка" найдена, как будто нам подсказали!
Эти библиотеки превращают ваши тесты в мощное судно, готовое к долгому путешествию по коду.
Лучшие Практики: Компас для поддержки кода
Путешествие по карте кода невозможно без компаса. Вот несколько советов, которые помогут улучшить поддержку вашего кода:
- Работайте с понятными именами переменных. "myStr" не говорит нам о том, что содержит переменная.
- Используйте одно конкретное утверждение в каждом тесте. Избегайте хаоса!
- В случае, когда типовые утверждения встречаются снова и снова, применяйте параметризованные тесты. Убивайте двух зайцев одним выстрелом!
Следуя этим принципам, тестирование вашего приложения станет надёжным залогом успешности вашего проекта.
Полезные материалы
- Руководство пользователя JUnit 5: Навигатор для опытных пользователей мира утверждений JUnit 5.
- Assert (JUnit API): Справочник по методам утверждений JUnit4.
- IsEqual (Hamcrest): Каталог описаний изысканных соответствий Hamcrest.
- StringUtils (Apache Commons Lang 3.14.0 API)): Набор инструментов для работы со строками.
- AssertJ – феерия гибких утверждений Java: Сборник хитростей для стильных утверждений AssertJ.
- Unit Tests with Mockito – Tutorial: Узнайте об эффективности юнит-тестирования на примере с Mockito.