我遇到@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使用配置的数据源?
答案 0 :(得分:0)
很抱歉,这是我在项目/测试配置中的错误。
给出一些答案:默认情况下,@DataJpaTest
使用嵌入的h2数据库,并忽略application.properties中声明的连接字符串。注释@AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE)
会禁用此行为,@DataJpaTest
测试将使用application.properties中配置的数据库。