首页 文章

Spring-boot不尊重liquibase属性

提问于
浏览
1

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

我不是 Spring 天的新手,但我是spring-boot的自动配置的新手 . 有没有人有问题 Spring 季启动不尊重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>

2 回答

  • 2

    如果您希望测试使用 application.properties ,则需要将它们作为Spring Boot应用程序运行 . 您对 @ContextConfiguration 的使用意味着您当前正在将它们作为一个普通的Spring Framework应用程序运行 . 用 @SpringApplicationConfiguration 替换 @ContextConfiguration 注释 .

  • 0

    应该有RTFM ......

    来自spring boot documentation

    ConfigFileApplicationContextInitializer是一个ApplicationContextInitializer,可以应用于您的测试以加载Spring Boot application.properties文件 . 当您不需要@SpringApplicationConfiguration提供的完整功能时,可以使用此功能 . @ContextConfiguration(classes = Config.class,initializers = ConfigFileApplicationContextInitializer.class)

    更改我的配置以使用初始化程序 .

相关问题