Spring Boot Test似乎正在创建H2测试数据库,这与我期望的有所不同

马丁

所以,我有一个用@DataJpaTest注释的测试@RunWith(SpringRunner.class),以及/ src / test / resources下的application.yml这个块(是的,缩进应该没问题):

spring:
  datasource:
    url: jdbc:h2:mem:foobar;MODE=Mysql;MVCC=FALSE;
    username: sa
    password:
    driver-class-name: org.h2.Driver

当我开始测试时,我意外地在日志中得到这些行:

2019-10-23 17:11:08.311  INFO 13468 --- [           main] beddedDataSourceBeanFactoryPostProcessor : Replacing 'dataSource' DataSource bean with embedded version
2019-10-23 17:11:08.801  INFO 13468 --- [           main] o.s.j.d.e.EmbeddedDatabaseFactory        : Starting embedded database: url='jdbc:h2:mem:7855270f-61b7-4f37-8796-cbfeb8ad42ea;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=false', username='sa'

特别是: Starting embedded database: url='jdbc:h2:mem:7855270f-61b7-4f37-8796-cbfeb8ad42ea;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=false

为什么Spring Boot会使用UUID生成的数据库启动数据库,而不从spring.datasource.url获取设置?

“生产性”应用程序使用相同的语法从/ src / main / resources中的文件中精确地进行了数据源设置,没有问题...

邦达连科

@DataJpaTest的文档中,您可以看到:

@DataJpaTest使用嵌入式内存数据库(替换任何显式或通常自动配置的数据源)。@AutoConfigureTestDatabase批注可用于覆盖这些设置。

因此,使用@DataJpaTest进行注释@AutoConfigureTestDatabase,会导致TestDatabaseAutoConfiguration使用硬编码创建嵌入式数据源generateUniqueName(true)

TestDatabaseAutoConfiguration.java

EmbeddedDatabase getEmbeddedDatabase() {
    ...
    return new EmbeddedDatabaseBuilder()
        .generateUniqueName(true)
        .setType(connection.getType())
        .build();
}

我认为他们这样做是为了防止数据库名称冲突和测试运行之间的状态混合。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何从H2数据库中的用户预加载Spring Boot集成测试?

来自分类Dev

使Spring Boot重新创建测试数据库

来自分类Dev

具有H2文件数据库的Spring Boot应用程序

来自分类Dev

使用spring-boot对相同URL进行身份验证的方式有所不同

来自分类Dev

通过 spring-boot [JAVA] 从 h2 数据库获取数据

来自分类Dev

Spring Boot 1.4测试

来自分类Dev

Spring Boot:H2数据库未保存到文件

来自分类常见问题

HTML布局中的h2数据库控制台:片段(Spring Boot + Java)

来自分类常见问题

如何配置spring-boot以使用基于文件的H2数据库

来自分类Dev

Spring Boot从类路径加载H2数据库文件

来自分类Dev

Spring Boot-内存泄漏-H2数据库-不注销驱动程序

来自分类Dev

在Spring-Boot 2.3.3中,H2内存数据库抛出NonTransientConnectionException

来自分类Dev

尝试从Java Spring Boot中的H2数据库获取相关实体

来自分类Dev

spring-boot没有创建hsqldb数据库

来自分类Dev

spring-boot没有创建hsqldb数据库

来自分类Dev

从cmd运行时的Spring Boot负载测试数据库

来自分类Dev

Spring Boot 2.2.1 H2失败?

来自分类Dev

Spring Boot不要让我创建没有数据库的存储库

来自分类Dev

没有Spring数据的Spring Boot JPA

来自分类Dev

Spring Boot Stormpath数据库

来自分类Dev

Spring Boot JPA数据库选择

来自分类Dev

基于Spring Boot目录的数据库

来自分类Dev

在新版本的Spring Boot中,Launcher与slf4j绑定的工作方式有所不同

来自分类Dev

使用Spring Boot进行集成测试期间使用测试数据填充数据库

来自分类Dev

使用Spring Boot进行集成测试期间使用测试数据填充数据库

来自分类Dev

在内存数据库中使用Spring Boot测试

来自分类Dev

在Spring Boot测试之前初始化数据库

来自分类Dev

Spring Boot多模块测试

来自分类Dev

容器内的Spring Boot测试

Related 相关文章

  1. 1

    如何从H2数据库中的用户预加载Spring Boot集成测试?

  2. 2

    使Spring Boot重新创建测试数据库

  3. 3

    具有H2文件数据库的Spring Boot应用程序

  4. 4

    使用spring-boot对相同URL进行身份验证的方式有所不同

  5. 5

    通过 spring-boot [JAVA] 从 h2 数据库获取数据

  6. 6

    Spring Boot 1.4测试

  7. 7

    Spring Boot:H2数据库未保存到文件

  8. 8

    HTML布局中的h2数据库控制台:片段(Spring Boot + Java)

  9. 9

    如何配置spring-boot以使用基于文件的H2数据库

  10. 10

    Spring Boot从类路径加载H2数据库文件

  11. 11

    Spring Boot-内存泄漏-H2数据库-不注销驱动程序

  12. 12

    在Spring-Boot 2.3.3中,H2内存数据库抛出NonTransientConnectionException

  13. 13

    尝试从Java Spring Boot中的H2数据库获取相关实体

  14. 14

    spring-boot没有创建hsqldb数据库

  15. 15

    spring-boot没有创建hsqldb数据库

  16. 16

    从cmd运行时的Spring Boot负载测试数据库

  17. 17

    Spring Boot 2.2.1 H2失败?

  18. 18

    Spring Boot不要让我创建没有数据库的存储库

  19. 19

    没有Spring数据的Spring Boot JPA

  20. 20

    Spring Boot Stormpath数据库

  21. 21

    Spring Boot JPA数据库选择

  22. 22

    基于Spring Boot目录的数据库

  23. 23

    在新版本的Spring Boot中,Launcher与slf4j绑定的工作方式有所不同

  24. 24

    使用Spring Boot进行集成测试期间使用测试数据填充数据库

  25. 25

    使用Spring Boot进行集成测试期间使用测试数据填充数据库

  26. 26

    在内存数据库中使用Spring Boot测试

  27. 27

    在Spring Boot测试之前初始化数据库

  28. 28

    Spring Boot多模块测试

  29. 29

    容器内的Spring Boot测试

热门标签

归档