spring-boot在测试中不使用application.properties

Iva*_*pov 6 hibernate flyway spring-boot

我有一个spring,hibernate和flyway项目来创建数据库模式.所以我有

spring.jpa.hibernate.ddl-auto: validate
Run Code Online (Sandbox Code Playgroud)

在我的application.properties文件中.此配置在正常运行期间(在打包可执行jar文件并从终端运行它之后):

2014-10-06 10:06:17.863  INFO 7519 --- [           main] o.h.tool.hbm2ddl.SchemaValidator         : HHH000229: Running schema validator
Run Code Online (Sandbox Code Playgroud)

但是在通过maven运行测试时会被忽略.

1804 [main] INFO  o.h.tool.hbm2ddl.SchemaExport - HHH000227: Running hbm2ddl schema export 
1805 [main] DEBUG org.hibernate.SQL - drop table test_entity if exists 
1806 [main] DEBUG org.hibernate.SQL - drop sequence hibernate_sequence 
1807 [main] DEBUG org.hibernate.SQL - create table test_entity (id bigint not null, name    varchar(255), primary key (id)) 
1807 [main] DEBUG org.hibernate.SQL - create sequence hibernate_sequence 
1808 [main] INFO  o.h.tool.hbm2ddl.SchemaExport - HHH000230: Schema export complete 
Run Code Online (Sandbox Code Playgroud)

与官方flyway-sample的主要区别在于我不使用spring-boot提供的maven-parent.

完整的项目就在这里

Dav*_*yer 15

您的测试不使用Spring Boot(它需要使用@SpringApplicationConfiguration而不是@ContextConfiguration,或声明适当的侦听器).


Szy*_*iak 5

您应该定义ConfigFileApplicationContextInitializer以在集成测试中包含application.properties文件.只需将注释更改为:

@ContextConfiguration(classes = FlywaySpringBootTestApplication.class, initializers = ConfigFileApplicationContextInitializer.class)
Run Code Online (Sandbox Code Playgroud)

我已经通过这个小改动发送了拉请求.