LiquiBase在Jhipster中用于测试的用法

时间:2019-07-19 10:23:33

标签: jhipster liquibase

我想在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;
}

但是我找不到删除所有表并重新运行所有变更集的方法。

1 个答案:

答案 0 :(得分:0)

在测试中使用@Transactional注释还不够吗?

Liquibase主要用于构建模式,部分用于在JHipster中加载一些测试数据,但是如果您的测试是事务性的,则在每种测试方法之后,将自动回滚测试插入或修改的数据。

删除模式并为每个测试重新创建它会慢很多。 即使您不想使用事务测试,删除表内容也比删除表并重新创建它们更快。