我想在Jhipster应用程序中使用LiquiBase进行每次测试后重新填充数据库。我如何设置Junit测试来做到这一点?
我看到最初LiquiBase在应用程序启动时通过以下方式运行:
@Bean
public SpringLiquibase liquibase(@Qualifier("taskExecutor") Executor executor,
DataSource dataSource, LiquibaseProperties liquibaseProperties) {
// Use liquibase.integration.spring.SpringLiquibase if you don't want Liquibase to start asynchronously
SpringLiquibase liquibase = new SpringLiquibase();
liquibase.setDataSource(dataSource);
liquibase.setChangeLog("classpath:config/liquibase/master.xml");
liquibase.setContexts(liquibaseProperties.getContexts());
liquibase.setDefaultSchema(liquibaseProperties.getDefaultSchema());
liquibase.setDropFirst(liquibaseProperties.isDropFirst());
liquibase.setChangeLogParameters(liquibaseProperties.getParameters());
if (env.acceptsProfiles(Profiles.of(JHipsterConstants.SPRING_PROFILE_NO_LIQUIBASE))) {
liquibase.setShouldRun(false);
} else {
liquibase.setShouldRun(liquibaseProperties.isEnabled());
log.debug("Configuring Liquibase");
}
return liquibase;
}
但是我找不到删除所有表并重新运行所有变更集的方法。
答案 0 :(得分:0)
在测试中使用@Transactional
注释还不够吗?
Liquibase主要用于构建模式,部分用于在JHipster中加载一些测试数据,但是如果您的测试是事务性的,则在每种测试方法之后,将自动回滚测试插入或修改的数据。
删除模式并为每个测试重新创建它会慢很多。 即使您不想使用事务测试,删除表内容也比删除表并重新创建它们更快。