Как сохранить интеграционные тесты Maven изолированными друг от друга? - PullRequest
0 голосов
/ 11 июня 2019

У меня есть несколько интеграционных тестов Maven, которые обновляют состояние базы данных, что может создавать конфликты между этими тестами. Мне было интересно, есть ли способ изолировать эти интеграционные тесты, используя фазы Maven или любой другой подход? В идеале я хотел бы иметь возможность запускать миграции баз данных перед каждым интеграционным тестовым классом. Я использую Flyway в качестве инструмента миграции для моей базы данных PostgreSQL и использую JUnit 4.12. Миграции, которые я выполняю, в основном создают и заполняют таблицы данными для тестирования.

Ответы [ 3 ]

1 голос
/ 11 июня 2019

Junit имеет аннотации @Before и @After, чтобы он мог вызывать методы до и после каждого тестового класса.

Эти методы отвечают за приведение базы данных в известное состояние перед каждым тестом.

0 голосов
/ 13 июня 2019

Я смог решить эту проблему, используя flyway-core. По сути, в каждом из тестовых классов я сделал следующее:

@BeforeClass
public static void migrateDB(){
    Flyway flyway = Flyway.configure().dataSource(url, user, password).load();
    flyway.clean();
    flyway.migrate();
}
0 голосов
/ 11 июня 2019

Обязанности Maven - запускать тесты один за другим на этапе интеграционные тесты и проверять результаты на подтверждение . Он также может подготовить / отключить среду. Проверьте отказоустойчивый плагин .

И вся изоляция между тестами является обязанностью используемой вами среды тестирования (JUnit, TestNG, Cucumber и т. Д.).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...