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

Mar*_*cha 4 spring-data-jpa spring-boot

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

应用程序属性

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
Run Code Online (Sandbox Code Playgroud)

无论多么神秘,这都无济于事。为什么?

快速查看测试日志的摘录:

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'
Run Code Online (Sandbox Code Playgroud)

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

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

那么任何想法如何说服@DataJpaTest 使用配置的数据源?

[1]使用 @DataJpaTest 我不能强制 h2 创建模式

Mar*_*cha 11

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

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