spring-boot 1.4中的新@DataJpaTest以及与application.properties

时间:2016-08-10 04:27:18

标签: spring spring-boot

我正在使用新的Spring Boot 1.4功能更新我的代码,在我的集成测试中,我试图使用新的@DataJpaTest注释。我遇到了我想运行的.sql文件的问题,其中一些只用于集成测试,另一个用于未来的生产数据库。

在我的集成测试中,我使用@Sql注释,/src/test/resources目录中的.sql文件和内存中的H2数据库。对于生产我正在使用mysql数据库,data-mysql.sql内有一个/src/main/resources文件。

当我运行集成测试时,我希望只看到/src/test/resources内的文件被执行,但即使我的data-mysql.sql正在执行。

这是正常行为吗?有一个简单的改变吗​​?

示例代码:

@RunWith(SpringRunner.class)
@DataJpaTest
@Sql("/test-data.sql")
public class CdrIntegrationTest {
     // any tests here
}

我的“生产”配置就是这些:

spring.jpa.hibernate.use-new-id-generator-mappings=true
spring.datasource.url=jdbc:mysql://localhost/prod
spring.datasource.username=root
spring.datasource.password=***
spring.datasource.initialize=true
spring.datasource.platform=mysql

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

通过“生产”配置他们只是在application.properties?默认情况下,使用SpringRunner和@DataJpaTest运行测试时,它仍然会引导加载那些application.properties的ApplicationContext,并因此尝试在测试期间加载data- {platform} .sql文件。本文档描述了要检查的属性的顺序:http://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html。 #1正在使用@TestPropertySource。因此,您可以在src / test / resources中创建一个h2-test.properties文件,并为其定义数据源属性,特别注意spring.datasource.platform。