在 JUnit5 中使用 H2 作为测试数据库

Use H2 as test DB in JUnit5

我正在 Spring Boot 中开发一个应用程序。我使用 PostreSQL 数据库进行生产,我希望我的 JUnit 5 测试在 H2 内存数据库上 运行。问题是,经过一些配置后,内存中的 db:

上的测试似乎仍然没有 运行
@DataJpaTest
@SpringBootTest
@TestPropertySource(locations = "classpath:application-test.properties")
@ExtendWith(SpringExtension.class)
@ActiveProfiles("test")
public class ClinicTest {
    @Resource
    private ClinicRepository clinicRepository;

    @Test
    public void givenClinic_whenSave_thenGetOk() {

        var clinic = new Clinic();
        clinic.setName("asd asd");
        clinic.setShortName("asd");
        
        // the ids of prod db entities are printed
        clinicRepository.findAll().forEach(clinic1 -> System.out.println(clinic1.getId()));
        

        // the id keeps incrementing between runs
        System.out.println(clinicRepository.save(clinic).getId());
    }

}

申请-test.properties

jdbc.driverClassName=org.h2.Driver
jdbc.url=jdbc:h2:mem:testdb
hibernate.dialect=org.hibernate.dialect.H2Dialect
hibernate.hbm2ddl.auto=create-drop
spring.test.database.replace=none

我应该如何更改 运行 内存数据库中 H2 的自包含测试?

Spring,默认情况下,为测试创建一个 H2 DB。您不需要在属性文件中指定它。

只需在 pom.xml 中添加 h2 并将其范围设置为测试。 Spring 引导应该处理其余部分。