Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring 弹簧靴不考虑液化特性_Spring_Spring Boot_Liquibase - Fatal编程技术网

Spring 弹簧靴不考虑液化特性

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

我正在设置liquibase,以便在一个新的spring启动应用程序中管理我的数据库。在某些集成测试运行后,我需要类路径中的liquibase依赖项来重置数据库状态。在测试期间,我不希望在应用程序上下文初始化期间通过spring auto-config启用liquibase。我已经尝试将liquibase.enabled=false添加到application.properties,但是当我调试LiquibaseAutoConfiguration类时,似乎enabled总是设置为true

我对spring并不陌生,但我对spring boot的自动配置是陌生的。是否有人对spring boot不尊重application.properties中的属性存在问题

我的设置相当简单:

相关代码片段:

@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。谢谢你花时间回答,我会接受你的回答