【发布时间】:2019-12-10 14:21:17
【问题描述】:
环境
以 H2 作为测试依赖的 SpringBoot 2。
制作作品
Jar 被部署到云端。 DB2 服务配置有驱动程序和连接详细信息,并自动绑定到 Java 应用程序。 jar 本身没有配置。有 application.properties 文件,但它是空的。这部分工作正常,我希望存在不需要我创建属性文件和配置文件的解决方案。
本地单元测试在“找不到架构 xxx”时崩溃
@Entity(table="Employee", schema="acme")
class Employee {
...
}
@RunWith(SpringRunner.class)
@DataJpaTest
public class EmployeeTest {
...
}
- 不存在数据源配置。
- SpringBoot 看到 H2 依赖,默认选择 Hibernate。
- Hibernate 看到实体定义并尝试首先删除表。
- drop 使用架构名称
drop table acme.employee if exists。未创建架构,因此进程失败并显示JdbcSQLSyntaxErrorException: Schema "acme" not found。 - 我尝试了
@TestPropertySource(properties ="jdbc:h2:testb;INIT=CREATE SCHEMA IF NOT EXISTS acme;"),但没有成功。
我在网络上发现了类似的问题和潜在的解决方案。但是它们深入到 Hibernate 和/或 Spring 配置文件中。我真的很想避免这种情况。只有本地单元测试失败,所以我希望找到包含在测试中的解决方案。
【问题讨论】:
-
您可以将 schema.sql 文件放在您的类路径中,以便创建 schema-h2.sql。 docs.spring.io/spring-boot/docs/current/reference/html/…
-
对于 Hibernate 创建的数据库,请参见:stackoverflow.com/questions/24278659/…
标签: java spring hibernate spring-boot h2