Распараллеливание интеграционных тестов БД — java, spring

У меня есть набор тестов, которые делают вызовы БД (через spring-data-jpa) и подтверждают результат в базе данных в памяти (mariadb4j).

Перед каждым тестом он перезапускает контекст Spring, каждый раз предоставляя мне новый контекст Spring и базу данных, и я могу распараллелить этот процесс без какого-либо вреда, поскольку каждый тест имеет свой собственный контекст и может выполняться отдельно.

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

Я пытался только воссоздать bean-компонент источника данных и не смог заставить его работать (но даже если бы я мог, я не думаю, что это правильное решение при распараллеливании тестов)

Я с нетерпением жду ваших предложений


person Ali H    schedule 16.02.2018    source источник
comment
Если вы используете Maven, вы можете запускать тесты параллельно с maven-surefire-plugin: stackoverflow.com/questions/423627/ И вместо воссоздания контекста Spring для каждого теста вы можете попробовать использовать отдельные наборы данных: Test1 использует данные за 1 января (или ID =1), Test2 использует 2 января (или ID=2) и так далее.   -  person Ivan    schedule 16.02.2018
comment
@Ivan параллельное выполнение тестов - не главная проблема. Я хочу, чтобы каждый тест указывал на собственный экземпляр базы данных.   -  person Ali H    schedule 16.02.2018
comment
Для базы данных в памяти для тестов вы можете попробовать использовать @Scope("prototype") для источника данных. stackoverflow.com/questions/7621920 / Но это потребует изменений в том, как вы используете источник данных в своих классах   -  person Ivan    schedule 16.02.2018