Spring Boot:如何在单元测试中使用liquibase设置测试数据

时间:2016-03-14 20:55:21

标签: java spring spring-boot liquibase

我正在尝试使用liquibase设置数据库模式和一些测试数据以进行某些测试。每个测试都有一个单独的更改日志,用于设置架构和测试的一些特定数据。

为了使我的测试工作,我需要在每次测试之前删除模式并用新的测试数据填充它。但是,似乎这不起作用,因为一些测试失败,因为旧的测试数据仍然可用。我认为我的配置不正确。如何在每次测试之前强制liquibase删除模式?

我的测试结果如下:

@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = MyTestConfig.class)
@TestPropertySource(properties = "liquibase.change-log=classpath:changelog/schema-with-testdata.xml")
public class MyRepositoryTest {

测试的配置如下:

@SpringApplicationConfiguration
@Configuration
@EnableAutoConfiguration
@ComponentScan("com.mypackage")
@EntityScan(basePackages = { "com.mypackage.domain" })
@EnableJpaRepositories(basePackages = { "com.mypackage.domain", "com.mypackage.infra.persistence" })
public class MyTestConfig {

src / main / test / resources下的application.properties是

liquibase.drop-first=true
spring.jpa.hibernate.ddl-auto=none

2 个答案:

答案 0 :(得分:3)

有一个spring.liquibase.dropFirst配置属性,这可能是您搜索的内容吗?

答案 1 :(得分:0)

不确定这是否完全回答了您的问题。还有另一个属性liquibase.default-schema = schemaNameToCreate

但即便如此,我也无法从头开始创建架构。