我有基于JUnit的访问数据库的集成测试。我们还使用Liquibase Spring bean来初始化数据库。
如果我尝试并行运行多个测试,则每个测试都会尝试使用Liquibase初始化数据库,这会导致锁定并最终导致失败,因为一次只能有一个Liquibase实例可以修改数据库。
测试配置如下:
@RunWith(SpringJUnit4ClassRunner.class)
@Transactional
@WebAppConfiguration
@Sql({"/schema/insert-test-data.sql"})
如何配置数据库初始化(模式和数据),使其仅执行一次,而不是针对每次测试?
答案 0 :(得分:0)
这只是想法而不是testet,但是如果您不并行执行脚本,那么如何使用ScriptUtils或ResourceDatabasePopulator iside @Before
方法并进行一些切换呢?
@Before
public void init(){
if (wasInitialized)
return;
new ResourceDatabasePopulator(new ClassPathResource("path/to/sql.sql")).execute(dataSource);
wasInitialized = true;
}