Цель: ускорить тестовый прогон через singleton-контейнеры и параллелизм, убрать флаки из-за общего состояния.
Зависимость: INIT-6.
Что сделать
- Переведи Testcontainers на singleton/reuse: один набор контейнеров (postgres/redis/kafka) на весь прогон вместо подъёма на класс. Статические контейнеры в
AbstractIntegrationTest без @Container-рестарта + .withReuse(true) и ~/.testcontainers.properties (testcontainers.reuse.enable=true).
- Включи параллельный прогон JUnit 5 (
junit-platform.properties: junit.jupiter.execution.parallel.enabled=true). Учти: общая БД + параллель = гонки за данные.
- Убери общее состояние между тестами: чистка/откат данных (
@Transactional либо truncate перед тестом), уникальные SKU/username на тест, никакого порядка-зависимого прохождения.
- Трудные места: изоляция данных при общей БД и параллели (схема-на-поток, префиксы, очистка); найти и починить флаки (зависимость от времени, от порядка, race в Kafka-консьюмере); измерь время прогона до/после и приложи цифры.
Acceptance criteria
Цель: ускорить тестовый прогон через singleton-контейнеры и параллелизм, убрать флаки из-за общего состояния.
Зависимость: INIT-6.
Что сделать
AbstractIntegrationTestбез@Container-рестарта +.withReuse(true)и~/.testcontainers.properties(testcontainers.reuse.enable=true).junit-platform.properties:junit.jupiter.execution.parallel.enabled=true). Учти: общая БД + параллель = гонки за данные.@Transactionalлибо truncate перед тестом), уникальные SKU/username на тест, никакого порядка-зависимого прохождения.Acceptance criteria