如何测试Hibernate通用DAO模式

3
我正在使用Google Guice和Hibernate开始一个项目,在配置数据库访问层的过程中,我遇到了一些疑问。
我的POJOs中使用JPA注释,我的通用DAO实现使用EntityManager对象与数据库通信。我进行了几个“手动”测试,并且发现它运行良好,但是我更喜欢遵循TDD方法来强化我的这种方法的知识。我不确定在Java中测试通用类型的最佳方法是什么,更不用说测试Hibernate通用DAO模式的最佳解决方案了。
我已经阅读了几个解决方案,但没有一个让我感到真正舒服:
- 其中之一是制作一个抽象类来测试通用DAO,并使用抽象方法获取特定的DAO和获取要持久化的实例等。 - 另一个解决方案是使用抽象类(如前一个解决方案)并使用工厂而不是抽象方法:对于这两个解决方案,我不知道是否值得拥有一个方法来获取要在项目中每个情况下测试的实体。 - 另一个解决方案可能是在特定的DAO中测试每个功能,而不是在通用DAO中测试:我认为这是最糟糕的解决方案,因为在大多数情况下,我将不得不重复很多代码来测试相同的东西。
除此之外,我还阅读到最好删除DAO层并直接从服务中使用实体管理器:我不认为这是最佳方式,因为您正在将数据库层与服务层混合在一起。
有谁能帮帮我?!
1个回答

0

DAO 和 entityManager 之间有什么区别?它们都是数据库层,只是不同的抽象层。

为了测试查询等内容,使用内存中的数据库比模拟整个数据访问层更好。


嗯...我没有想过那样,也许我需要深入思考一下。我正在使用内存数据库进行测试,我的问题集中在测试数据访问层的更好策略是什么。 - juangabreil
测试真正的实现,否则测试就是无意义的,因为它们没有测试应该测试的东西。 - Firo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接