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