在 H2DB 中使用 @DataJpaTest 时出现太多 DDL

Too many DDL occur when using @DataJpaTest in H2DB

我把JUnit4改成了JUnit5

之前也是用 MSSQL 进行测试,但我们将其更改为 H2DB

这个时候出现问题

我的遗留项目有大约 400 个表。

如果您使用 @DataJpaTest 进行持久性测试,发生超过 400 个 CREATE DDL。

我寻找解决这个问题的方案,但我找到的最好看的方案是在 schema.sql.

中预先编写大约 400 个 Create DDL

我想要的

我想创建一个MEMBER table只有当有如下代码时,并且只测试MEMBER table

public interface MemberRepository extends JpaRepository<Member, Long>{
}

您有什么有用的功能或解决方案 JUnit5 吗?

创建application-test.yml用于测试配置并将ddl-auto设置为none.

申请-test.yml

spring:
  jpa:
    show-sql: true
    hibernate:
      ddl-auto: none
  

使用@ActiveProfiles("test")启动应用程序-test.yml@Sql("Member.sql")测试脚本。

@ActiveProfiles("test")
@DataJpaTest
public class MemberRepositoryTests {
    @Autowired
    private MemberRepository memberRepository;

    @Test
    @Sql("Member.sql")
    public void testSomething() {
        Member member = memberRepository.findById(1L).orElse(null);
        assertThat(member).isNotNull();
        assertThat(member.getId()).isEqualTo(1L);
    }
}     

创建 Member.sqlscr/test/resource/com.yourpackage

create table if not exists member (id bigint not null, primary key (id));
insert into member (id) values (1);

在这种情况下,DDL 不会创建 table,您可以将 sql 自定义为 运行 MemberRepository 上的内容。

完整代码为here.