Spring 弹簧靴不考虑液化特性
我正在设置liquibase,以便在一个新的spring启动应用程序中管理我的数据库。在某些集成测试运行后,我需要类路径中的liquibase依赖项来重置数据库状态。在测试期间,我不希望在应用程序上下文初始化期间通过spring auto-config启用liquibase。我已经尝试将liquibase.enabled=false添加到application.properties,但是当我调试LiquibaseAutoConfiguration类时,似乎enabled总是设置为true 我对spring并不陌生,但我对spring boot的自动配置是陌生的。是否有人对spring boot不尊重application.properties中的属性存在问题 我的设置相当简单: 相关代码片段:Spring 弹簧靴不考虑液化特性,spring,spring-boot,liquibase,Spring,Spring Boot,Liquibase,我正在设置liquibase,以便在一个新的spring启动应用程序中管理我的数据库。在某些集成测试运行后,我需要类路径中的liquibase依赖项来重置数据库状态。在测试期间,我不希望在应用程序上下文初始化期间通过spring auto-config启用liquibase。我已经尝试将liquibase.enabled=false添加到application.properties,但是当我调试LiquibaseAutoConfiguration类时,似乎enabled总是设置为true 我对s
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = { SpringBootClass.class })
public class databaseTests{
@Before
public void setup() throws LiquibaseException, SQLException {
Database database = DatabaseFactory.getInstance().findCorrectDatabaseImplementation(new JdbcConnection(dataSource.getConnection()));
Liquibase liquibase = new Liquibase("db/changelog/db.changelog-master.yaml", new FileSystemResourceAccessor("src/main/resources/"),database );
liquibase.dropAll();
liquibase.update("test");
}
..
}
@SpringBootApplication
@Import({ DataSourceConfig.class, HibernateConfig.class, OauthConfig.class })
@EnableConfigurationProperties
public class SpringBootClass {
..
}
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.2.6.RELEASE</version>
<!-- <liquibase.version>3.3.5</liquibase.version> -->
<dependency>
<groupId>org.liquibase</groupId>
<artifactId>liquibase-core</artifactId>
<scope>test</scope>
</dependency>
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(类={SpringBootClass.class})
公共类数据库测试{
@以前
public void setup()引发LiquibaseException,SQLException{
Database Database=DatabaseFactory.getInstance().findCorrectDatabaseImplementation(新的JdbcConnection(dataSource.getConnection());
Liquibase Liquibase=new Liquibase(“db/changelog/db.changelog master.yaml”,新文件系统资源访问器(“src/main/resources/”),数据库);
liquibase.dropAll();
液化酶更新(“测试”);
}
..
}
@SpringBoot应用程序
@导入({DataSourceConfig.class,HibernateConfig.class,OauthConfig.class})
@EnableConfigurationProperties
公共类SpringBootClass{
..
}
org.springframework.boot
spring启动程序父级
1.2.6.1发布
org.liquibase
液化酶核心
测试
如果您希望您的测试使用应用程序.properties
您需要将它们作为Spring Boot应用程序运行。使用@ContextConfiguration
意味着您当前正在将它们作为一个vanilla Spring Framework应用程序运行。将@ContextConfiguration
注释替换为@SpringApplicationConfiguration
应具有RTFM
从
ConfigFileApplicationContextInitializer是一个
可以应用于要加载的测试的ApplicationContextInitializer
Spring Boot application.properties文件。您可以在需要时使用此选项
不需要提供的全部功能
@Spring应用程序配置
@ContextConfiguration(classes=Config.class,
initializers=ConfigFileApplicationContextInitializer.class)
将配置更改为使用初始值设定项是有效的。这也是一个很好的解决方案,因为这些测试不需要spring引导,所以我在上面的回答中使用了ConfigFileApplicationContextInitializer。谢谢你花时间回答,我会接受你的回答