3

有用作主数据库的带有 h2 数据库的 spring boot 应用程序。还有一个resource/schema.sqlwich 在启动时由 spring boot 加载。

@SpringBootTest但是在使用spring boot的集成测试期间不会加载这个schema.sql。相反,它需要在h2已经有 db 的情况下设置嵌入式数据库。

有没有办法在schema.sql没有嵌入数据源配置的情况下执行?并且只为所有测试做一次(例如,为所有测试使用@Sql模式创建不是解决方案)?

4

2 回答 2

6

@Sql(scripts = "classpath:schema.sql", executionPhase = Sql.ExecutionPhase.BEFORE_TEST_METHOD)使用您的 schema.sql 在资源文件夹中的位置注释您的类或方法。

如果你的测试被标记为集成测试,你需要这个。如果您正在运行单元测试或仅在启用默认单元测试的情况下进行编译,Spring Boot 将为您执行此操作。

于 2017-05-03T17:28:00.517 回答
3

在属性文件中设置它,然后将 schema.sql 重命名为 schema-test.sql spring.datasource.platform=test

只要你在类路径中有它(h2、hsqldb 或 derby),Spring boot 就会自动为你配置嵌入式数据库

于 2017-04-26T07:26:21.953 回答