弹簧靴不尊重液体的性质

  • 本文关键字: spring spring-boot liquibase
  • 更新时间 :
  • 英文 :


我正在设置liquidbase,以便在一个新的spring启动应用程序中管理我的数据库。我需要在我的类路径中的liquibase依赖项,以便在某些集成测试运行后重置数据库状态。在我的测试中,我不希望在应用程序上下文初始化期间通过spring自动配置启用liquidbase。我试过加液体。启用=应用程序的false。属性,但是当我调试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>

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

应该有RTFM…

来自spring引导文档

ConfigFileApplicationContextInitializer是ApplicationContextInitializer,可以应用于要加载的测试Spring Boot应用程序。属性文件。你可以用这个当你不需要提供的全部功能@SpringApplicationConfiguration .

@ContextConfiguration(class = Config.class,initializers = ConfigFileApplicationContextInitializer.class)

相关内容

  • 没有找到相关文章

最新更新