2012-04-03 60 views
0

我在应用程序中有很多实体,并且我使用JPA实现来坚持它们,因此,跨DAO的大多数CRUD方法都是类似的(请参见下面的示例类图)。Spring,JPA - 测试抽象类

enter image description here

为此有接口DAOTemplate其中包含适用于所有实体方法,由抽象类AbstractDAO实现。

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

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

感谢您的回答。

回答

1

您应该测试UserDAOTest中的所有方法,因为根据您尝试持续的实体调用它们将会有不同的结果。你不仅要测试你的DAO代码,还要测试你的实体,它们的注释和它们之间的关系。

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

1

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