@DataJpaTest忽略`spring.datasource.url`配置。怎么修?

时间:2019-02-13 16:58:52

标签: spring-boot spring-data-jpa

我遇到@DataJpaTest的问题,因为由于缺少模式[1]而无法创建表。所以我想,我可以通过在连接字符串中创建架构来欺骗spring,如:

application.properties

spring.datasource.url=jdbc:h2:mem:SCH;MODE=Oracle;DB_CLOSE_DELAY=-1;INIT=create schema if not exists SCH
spring.datasource.username=test
spring.datasource.password=test

然而,这毫无帮助。为什么?

快速浏览一下测试日志摘录:

2019-02-13 17:48:12.735  INFO [CCH,,,] 28586 --- [           main] o.s.j.d.e.EmbeddedDatabaseFactory        : Starting embedded database: url='jdbc:h2:mem:11247702-6bc4-44b9-be65-9639ebb8d695;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=false', username='sa'

好吧,因为@DataJpaTest忽略了application.properties中配置的数据源,而是使用了自动配置的h2数据库

我发现我可以使用@AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE),但是这也不起作用,并且失败了,Unknown host specified也失败了。什么主机??

那么有什么主意如何限制@DataJpaTest使用配置的数据源?

[1] Using @DataJpaTest I cannot force h2 to create schema

1 个答案:

答案 0 :(得分:0)

很抱歉,这是我在项目/测试配置中的错误。

给出一些答案:默认情况下,@DataJpaTest使用嵌入的h2数据库,并忽略application.properties中声明的连接字符串。注释@AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE)会禁用此行为,@DataJpaTest测试将使用application.properties中配置的数据库。