在 JUnit5 中使用 H2 作为测试数据库
Use H2 as test DB in JUnit5
我正在 Spring Boot 中开发一个应用程序。我使用 PostreSQL 数据库进行生产,我希望我的 JUnit 5 测试在 H2 内存数据库上 运行。问题是,经过一些配置后,内存中的 db:
上的测试似乎仍然没有 运行
我可以从产品数据库访问实体(保存的实体不会保留在产品数据库中)
如果我通过 grep 查看测试日志,我可以看到 Hibernate 使用 org.hibernate.dialect.PostgreSQLDialect
@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 引导应该处理其余部分。
我正在 Spring Boot 中开发一个应用程序。我使用 PostreSQL 数据库进行生产,我希望我的 JUnit 5 测试在 H2 内存数据库上 运行。问题是,经过一些配置后,内存中的 db:
上的测试似乎仍然没有 运行我可以从产品数据库访问实体(保存的实体不会保留在产品数据库中)
如果我通过 grep 查看测试日志,我可以看到 Hibernate 使用 org.hibernate.dialect.PostgreSQLDialect
@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 引导应该处理其余部分。