TGViewer
Чашечка Java Чашечка Java @a_cup_of_java · 8.37K subscribers
Post #7489 1.24K
Нашел, проверил, убедил: как мы организовали генерацию SQL-запросов, проверку сложных данных и при чем здесь Allure

Привет, Хабр!

Я, Михаил Герасимов, инженер РСХБ-Интех. Уже два года занимаюсь автоматизацией тестирования, и за это время успел написать (и переписать) немало SQL-запросов. Вместе с моим коллегой Михаилом Палыгой мы развиваем инструменты для автоматизированного тестирования, и сегодня расскажем вам о том как мы справляемся с построением сложных SQL-запросов и проверкой объектов в базе данных, на примере нашей библиотеки CheckMateDB для автоматизации тестирования банковской системы ЦФТ-Банк.

В статье опишем проблемы, с которыми сталкивались при ручном написании SQL-запросов и проверке данных: дублирование кода, сложность поддержки, отсутствие единого стиля и низкая информативность тестов. Для решения этих проблем мы разработали инструмент QueryBuilder, который позволяет динамически генерировать SQL-запросы с помощью Java-кода.

Мы создали иерархию классов CriteriaBasic и Table для удобного описания критериев поиска данных в базе, используя паттерн fluent interface. Также мы разработали кастомные классы проверок на базе AssertJ с поддержкой Allure-шагов, которые позволяют проверять сложные многоуровневые объекты с возможностью погружения во вложенные структуры. Для облегчения рутинной работы создали плагин, автоматически генерирующий классы DTO и Table на основе структуры базы данных. Библиотека интегрирована с Hibernate через DaoCommon, что обеспечивает удобное выполнение SQL-запросов и управление сессиями. Результатом стало существенное улучшение читаемости тестов, повышение переиспользуемости кода, стандартизация подхода к тестированию и создание информативных Allure-отчетов.


Читать: https://habr.com/ru/companies/rshb/articles/916148/?utm_campaign=916148

@a_cup_of_java | Другие наши каналы
  • ❤ 1
More from @a_cup_of_java
  1. Oct 1, 2026Как измерить экономию памяти от компактных заголовков в Java 27 В Java 27 HotSpot по умолч…
  2. Oct 1, 2026Spring Boot 4 и BoxLang: как сохранить CFML-шаблоны при миграции BoxLang Spring Boot Start…
  3. Oct 1, 2026JDK 25 и G1: почему Arrays.fill замедлился в 265 раз В JMH-тесте на Apple M4 Max заполнени…
  4. Sep 30, 2026Как настроить MFA в Spring Security 7 для приложения и отдельных эндпоинтов Spring Securit…
  5. Sep 30, 2026Как StructuredTaskScope в JDK 27 отменяет лишнюю работу при сбое Два независимых вызова к…
  6. Sep 30, 2026Как подтвердить взаимную блокировку по дампу потоков Java Если JVM перестала выполнять раб…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →