Найти в Дзене
KIT

Database Rider - простая работа с тестовыми данными

Если вы пишете интеграционные тесты для spring-boot приложений, то, скорее всего, сталкивались с проблемой инициализации данных перед тестом и их последующей очистки после окончания теста. Существует множество способов подготовки и очистки данных, вот некоторые из них: Эти варианты достаточно простые для начальной реализации, но у них есть существенные недостатки при дальнейшем использовании: Как упростить себе подготовку и очистку данных в интеграционных тестах? Использовать библиотеку Database Rider. Database Rider - это библиотека, построенная на основе DBUnit, которая позволяет работать с тестовыми данными в простом и декларативном подходе. Вместо того, чтобы готовить SQL скрипты для наполнения таблиц, можно описывать необходимые для теста данные в простых и читаемых форматах - JSON, YAML, XML, CSV и XLS. Ключевые преимущества, которые дает Database Rider: Простой пример использования Database Rider для тестирования доступен по ссылке. Database Rider делает рутинную работу по подго

Если вы пишете интеграционные тесты для spring-boot приложений, то, скорее всего, сталкивались с проблемой инициализации данных перед тестом и их последующей очистки после окончания теста.

Существует множество способов подготовки и очистки данных, вот некоторые из них:

  • Запуск sql-скрипта, написанного руками, в секциях @Before/@After.
  • Использование скрипта import.sql в spring-boot для инициализации БД.
  • Запуск отдельных миграций liquibase/flyway для тестовых данных.

Эти варианты достаточно простые для начальной реализации, но у них есть существенные недостатки при дальнейшем использовании:

  • Избыточный код, который переносится из теста в тест.
  • Сложность поддержки данных при изменении БД.
  • Постоянно возникающие конфликты между тестами.
  • Плохая читаемость тестовых данных.

Как упростить себе подготовку и очистку данных в интеграционных тестах? Использовать библиотеку Database Rider.

Database Rider - это библиотека, построенная на основе DBUnit, которая позволяет работать с тестовыми данными в простом и декларативном подходе. Вместо того, чтобы готовить SQL скрипты для наполнения таблиц, можно описывать необходимые для теста данные в простых и читаемых форматах - JSON, YAML, XML, CSV и XLS.

Ключевые преимущества, которые дает Database Rider:

  • Декларативный и читаемый формат - данные описываются в удобном и читаемом формате - CSV/YAML/JSON/XSL.
  • Автоматическая загрузка и очистка БД - с помощью одной аннотации - @DataSet можно указать, какие данные необходимо загрузить перед тестом. А после теста таблицы автоматически очистятся.
  • Сравнение состояния БД после теста - после манипуляции с данными можем проверить состояние БД и сравнить с ожидаемым, используя аннотацию @ExpectedDataSet.
  • Гибкость управления тестовыми данными - можно определять разные наборы данных для разных тестовых сценариев.
  • Поддержка Spring и JUnit5 - в отличие от DBUnit, Database Rider отлично интегрируется с современным стеком Java-разработки.

Простой пример использования Database Rider для тестирования доступен по ссылке.

Итог

Database Rider делает рутинную работу по подготовке и очистке БД. Это простой инструмент, который сделает ваши тесты чище и нагляднее. Попробуйте использовать его совместно с testcontainers, это значительно упростит разработку и поддержку тестов.

Мой канал в telegram, не забудь подписаться.

#Database #DevOps #Java #DatabaseRide