【问题标题】:How to add an init script to h2 junit spring test?如何将初始化脚本添加到 h2 junit spring test?
【发布时间】:2021-05-21 05:14:17
【问题描述】:

我有一个@SpringBootTest,它使用内存中的h2 db 进行junit 测试:

spring.datasource.cache.url=jdbc:h2:mem:;MODE=MYSQL
spring.datasource.cache.username=test
spring.datasource.cache.password=test

问题:如何在 h2 db 启动时向其添加架构创建脚本,但仅用于一项或多项测试?

【问题讨论】:

  • docs 中的某些内容对您没有帮助吗?
  • 是的:我不想为任何测试加载架构,但只为一个特定的测试加载。所以我正在寻找一个可以应用于每个测试而不是每个应用程序的初始化。

标签: java spring spring-boot h2 spring-boot-test


【解决方案1】:

基本上你可以尝试在想要生成模式/数据/等的测试上使用@Sql注解。

给它一个包含架构定义的脚本,你就可以开始了。

@Sql("/generate_schema.sql")
public class MyTest {
}

【讨论】:

  • 或加载具有spring.datasource.url=jdbc:h2:mem:test;INIT=RUNSCRIPT FROM 'classpath:schema-specific.sql'@ActiveProfile("junit-specific")
  • 顺便说一句:两者都有效。但是,如果您正在寻找模式生成之前 例如休眠初始化启动,您必须使用INIT=RUNSCRIPT 方法。因为@Sql是在休眠初始化之后运行的。
猜你喜欢
  • 1970-01-01
  • 2018-09-05
  • 2017-04-27
  • 2018-03-22
  • 1970-01-01
  • 1970-01-01
  • 2021-10-06
  • 2018-08-20
  • 1970-01-01
相关资源
最近更新 更多