弹簧靴:如何在单元测试中使用液态设置测试数据

2022-09-01 19:33:31

我正在尝试设置数据库模式和一些测试数据与 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 下的应用程序属性是

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

答案 1

有一个配置属性。也许这就是你要找的?spring.liquibase.dropFirst


答案 2

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

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


推荐