我在应用程序中有很多实体,并且我使用JPA实现来持久化它们,因此跨DAO的大多数CRUD方法都是相似的(参见下面的示例类图)。
为此目的,接口DAOTemplate
包含可用于所有实体的方法,并由抽象类AbstractDAO
实现。
某些实体需要其他方法,例如findByEmail
实体User
。为此目的,存在具有这样的方法的DAO接口,例如, UserDAO
。
现在我想为所有方法(DAOTemplate
和UserDAO
中的方法)编写集成测试。什么是最好的解决方案?我应该以某种方式(如何?)测试AbstractDAO
,然后只考虑UserDAOTest
中的特殊方法,还是应该测试UserDAOTest
中的所有方法以及其他实体的其他测试用例?我试图避免第二种解决方案,因为我不喜欢它。
感谢您的回答。
答案 0 :(得分:1)
您应该测试UserDAOTest中的所有方法,因为调用它们会有不同的结果,具体取决于您尝试保留的实体。您不仅要测试DAO代码,还要测试实体,注释和关系。
但是遵循DRY原则,你不应该在每个测试中重新实现AbstractDAO方法,但是你可以创建一个所有UserDAOTest继承的AbstracDAOTest。让你的测试与你的代码相匹配应该看起来很不错..
答案 1 :(得分:1)