2015-10-20 53 views
1

我正在設置liquibase來管理我的數據庫在一個新的春季啓動應用程序的過程。我需要在我的類路徑中使用liquibase依賴項來在某些集成測試運行後重置數據庫狀態。在測試期間,我不希望在應用程序上下文初始化期間通過spring auto config啓用liquibase。我已經嘗試將liquibase.enabled = false添加到application.properties,但是當我調試LiquibaseAutoConfiguration類時,它顯示啓用始終設置爲true。春季開機不尊重liquibase屬性

我不是新來的春天,但我是新的春季引導的自動配置。有沒有人有過彈簧引導不尊重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

如果你希望你的測試,以消耗你需要運行它們的春天啓動應用程序application.properties。您使用@ContextConfiguration意味着您目前正在運行它們作爲vanilla Spring Framework應用程序。將@ContextConfiguration註釋替換爲@SpringApplicationConfiguration

+0

這也是一個很好的解決方案,最終因爲我不需要這些測試的彈簧啓動,所以我最終在上面的回答中使用了ConfigFileAplicationContextInitializer。感謝您花時間回答,我會接受您的答案爲正確答案 – ctwomey1

0

應該有RTFM ...

spring boot documentation

ConfigFileApplicationContextInitializer是 ApplicationContextInitializer,可以應用到你的測試加載 春季啓動的application.properties文件。當您的 不需要 @SpringApplicationConfiguration提供的全部功能時,您可以使用它。

@ContextConfiguration(類= Config.class, 初始化= ConfigFileApplicationContextInitializer.class)

更改我的配置使用的初始化工作。