1

我想在 Jhipster 应用程序中使用 LiquiBase 进行每次测试后重新填充数据库。cat 我怎么设置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;
}

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

4

1 回答 1

1

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

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

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

于 2019-07-19T12:35:59.557 回答