【发布时间】:2021-03-18 22:14:56
【问题描述】:
我正在使用 SpringBoot、JPA 和 Hibernate 实现一个项目。
我使用 JPA 存储库实现了 DB 实体层。
我有兴趣了解为这一层编写单元测试的最佳实践。
- 第一点:对于这一层,从您的角度来看,有必要使用集成数据库还是有必要使用 Mockito 等进行模拟?
- 我的想法,对于这一层,例如,测试实体结构:例如检查字段验证,插入和检索一些数据。通过这种方式,我想我可以覆盖整个数据层的测试。
我正在尝试了解这些最佳实践,同时,我尝试编写第一个测试示例:
@ActiveProfiles("test")
@DisplayName("Test Item JPA Entity")
@DataJpaTest
@AutoConfigureTestDatabase( replace = AutoConfigureTestDatabase.Replace.NONE )
public class ItemEntityTest {
@Autowired
MyEntityRepository repo;
@Test
@Transactional
public void testEntityCreation() {
Entity e = new Entity();
e.setMyField1("A");
e.setMyField1("A");
//e.setMandatoryField("C")
repo.save(e);
}
}
不幸的是,在这种情况下,我注意到没有应用字段验证(@NotNull 或 @NotEmpty,或 @Column(nullable=false) 等...如果我尝试将实体保存到我的应用程序中,则验证工作正常...引发异常)。为什么?
还有一些“自动字段”(例如创建时间和最后修改时间)没有填写。
这是正确的路径吗?何来测试我的实体定义?
【问题讨论】:
-
我认为问题出在测试实体管理器的刷新上,请查看answer
-
我正在使用 JPA 存储库,我还需要在我的测试中使用它
标签: java spring-boot hibernate unit-testing jpa