【问题标题】:Spring, JPA -- testing abstract classSpring,JPA——测试抽象类
【发布时间】:2012-04-16 22:25:37
【问题描述】:

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

为此,有一个接口DAOTemplate,其中包含所有实体可用的方法,并由抽象类AbstractDAO实现。

某些实体需要其他方法,例如 findByEmail 用于 User 实体。为此目的,有带有此类方法的 DAO 接口,例如UserDAO.

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

感谢您的回答。

【问题讨论】:

    标签: spring testing jpa integration abstract


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      我也有类似的情况。如果你有很多 DAO,那么再次测试相同的方法可能会很慢。 我创建虚拟实体和 DAO 实现仅用于测试。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-11-26
        • 2010-09-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-10-01
        相关资源
        最近更新 更多