Spring、JPA——测试抽象类

标签 spring testing jpa integration abstract

我在应用程序中有很多实体,我使用 JPA 实现来持久化它们,因此跨 DAO 的大多数 CRUD 方法都是相似的(参见下面的示例类图)。

enter image description here

为此,有接口(interface) DAOTemplate,它包含可用于所有实体的方法,并由抽象类 AbstractDAO 实现。

一些实体需要额外的方法,例如 User 实体的 findByEmail。为此目的,有带有此类方法的 DAO 接口(interface),例如UserDAO.

现在我想为所有方法(DAOTemplateUserDAO 中的方法)编写集成测试。什么是最好的解决方案?我应该以某种方式(如何?)测试 AbstractDAO 然后只测试 UserDAOTest 中的特殊方法,还是应该测试 UserDAOTest 中的所有方法以及其他测试其他实体的案例?我试图避免第二种解决方案,因为我不喜欢它。

感谢您的回答。

最佳答案

您应该测试 UserDAOTest 中的所有方法,因为调用它们会产生不同的结果,具体取决于您尝试保留的实体。您不仅要测试您的 DAO 代码,还要测试您的实体、它们的注释和它们之间的关系。

但是按照 DRY 原则,您不应该在每个测试中重新实现 AbstractDAO 方法,但是您可以创建一个所有 UserDAOTest 都继承自的 AbstracDAOTest。让你的测试像这样匹配你的代码应该看起来很不错..

关于Spring、JPA——测试抽象类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9990339/

相关文章:

spring - 在docker中使用gradle设置事件的 Spring 配置文件没有任何效果

java - 读取异步请求中的响应正文

java - 复杂作业的 Spring Batch 性能改进

javascript - 在 Jasmine 测试中访问 IIFE

使用 APIRequestFactory : how to pass "flat" parameter to a view 进行 Django 测试

java - 列不存在 - Hibernate ManyToMany 关联类

java - 在执行作业时检测到重复步骤

javascript - 在 React 中测试 API 调用 - 状态未更新

java - 使用 Hibernate 时如何避免警告 "firstResult/maxResults specified with collection fetch; applying in memory!"?

java - 如何使用 Hibernate 和 Spring Data JPA 正确注释两个实体之间的关系?