如何使Maven集成测试彼此隔离?

时间:2019-06-10 21:18:11

标签: java database maven integration-testing

我有多个正在更新数据库状态的Maven集成测试,这可能会在这些测试之间造成冲突。我想知道是否有办法利用Maven阶段或任何其他方法来隔离这些集成测试?理想情况下,我希望有一种方法可以在每个集成测试类之前运行数据库迁移。我正在使用Flyway作为PostgreSQL数据库的迁移工具,并且正在使用JUnit 4.12。我正在运行的迁移基本上是在创建表并填充要测试的数据。

3 个答案:

答案 0 :(得分:1)

Junit具有@Before@After批注,以使其在每个测试类之前和之后调用方法。

然后,这些方法负责在每次测试之前将数据库置于已知状态。

答案 1 :(得分:0)

Maven的职责是在集成测试阶段一个接一个地运行测试,并在 verify 上检查结果。它还能够准备/关闭环境。选中failsafe plugin

测试之间的所有隔离都是您使用的测试框架(JUnit,TestNG,Cucumber等)的责任。

答案 2 :(得分:0)

我能够使用flyway-core解决此问题。基本上,我最终在每个测试类中都进行了以下操作:

@BeforeClass
public static void migrateDB(){
    Flyway flyway = Flyway.configure().dataSource(url, user, password).load();
    flyway.clean();
    flyway.migrate();
}