有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何执行`模式。sql`在没有嵌入式数据源配置的spring引导测试期间?

有一个spring启动应用程序,其中h2数据库用作主数据库。还有一个resource/schema.sql在spring boot启动时加载

但是在使用@SpringBootTest进行集成测试期间,spring引导不会加载这个schema.sql。相反,它需要在已有h2数据库时设置嵌入式数据库

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


共 (2) 个答案

  1. # 1 楼答案

    在属性文件中设置此选项,然后重命名架构。sql到模式测试。sql spring.datasource.platform=test

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

  2. # 2 楼答案

    @Sql(scripts = "classpath:schema.sql", executionPhase = Sql.ExecutionPhase.BEFORE_TEST_METHOD)注释类或方法,其中包含您的模式。sql位于资源文件夹上

    如果您的测试被标记为集成测试,则需要此选项。如果您正在运行单元测试或只是在启用单元测试的情况下编译(默认情况下),SpringBoot将为您执行此操作