测试用例:使用Spring bean模拟数据库

RN.*_*RN. 6 java junit spring unit-testing mocking

我们的应用程序有一个服务层和一个DAO层,写成Spring bean.

在测试服务层时 - 我不想依赖于真正的数据库,因此我通过为DAO层创建"Mock"Impl来嘲笑它

因此,当我测试服务层时,我将服务层bean链接到模拟DAO bean并且在生产中将服务层链接到"真正的"DAO bean

这是一个好主意吗 ?关于如何模拟数据库层的任何替代建议?

澄清:这个问题是关于测试服务层而不是DAO层.在测试服务层时 - 我假设DAO层已经过测试或不需要测试.主要的是 - 我们如何测试服务层 - 而不依赖于DAO实现 - 因此我在模拟DAO层

小智 5

这是我们多年来一直使用的技术.请注意,在模拟DAO接口时,您有一些选择:

  • 将模拟实例创建为真正的Java类
  • 使用动态模拟框架,例如jMock(我的首选项)或EasyMock

动态模拟框架允许您存根各种情况(无数据,1行,多行,异常抛出),而无需创建复杂类来存根您希望测试的行为