java - 测试用例 : Mocking Database using Spring beans

标签 java unit-testing spring junit mocking

我们的应用程序有一个服务层和一个 DAO 层,编写为 Spring bean。

在测试服务层时——我不想依赖真实的数据库,所以我通过为 DAO 层创建一个“模拟”实现来模拟它

所以当我测试服务层时——我将服务层 bean 链接到 Mock DAO bean 在生产中——将服务层链接到“真正的”DAO bean

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

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

最佳答案

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

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

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

关于java - 测试用例 : Mocking Database using Spring beans,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1064729/

相关文章:

c++ - C++ FakeIt 库多重继承

java - 我应该拆分 Spring 上下文文件吗

java - 错误 javax.validation.ConstraintViolationException

javascript - 为什么视频完整路径在 netBeans IDE 中不起作用?

java - 我是否必须在 Apache Tiles 中的每个 tile 中包含库?

javascript - Jest Uncovered Lines - 我如何测试这些线..?

c# - 如何改变 stub 的行为?

java - 如何重命名 Spring MVC Web App 上下文根?

java - 按钮点击内的 Toast 调用给出了我无法弄清楚的错误

java - 无法理解的 JUnit 错误