我正在设置liquibase以在新的Spring启动应用程序中管理我的数据库。我需要在类路径中使用liquibase依赖项来在某些集成测试运行后重置数据库状态。在我的测试期间,我不希望在应用程序上下文初始化期间通过spring auto config启用liquibase。我已经尝试将liquibase.enabled = false添加到application.properties,但是当我调试LiquibaseAutoConfiguration类时,看起来enabled始终设置为true。
我不是春天的新手,但我是Spring-boot的自动配置的新手。有没有人在spring.properties中遇到属于spring boot的问题?
我的设置相当小:
相关代码段:
@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>
答案 0 :(得分:2)
如果您希望测试使用application.properties
,则需要将它们作为Spring Boot应用程序运行。您对@ContextConfiguration
的使用意味着您当前正在将它们作为一个普通的Spring Framework应用程序运行。将@ContextConfiguration
注释替换为@SpringApplicationConfiguration
。
答案 1 :(得分:0)
应该有RTFM ......
ConfigFileApplicationContextInitializer是一个 ApplicationContextInitializer,可以应用于您的测试加载 Spring Boot application.properties文件。你可以使用它 不需要提供的全部功能 @SpringApplicationConfiguration。
@ContextConfiguration(classes = Config.class, initializers = ConfigFileApplicationContextInitializer.class)
更改我的配置以使用初始化程序。