【问题标题】:How to use Mockito for Behaviors related to Databse Interaction [closed]如何将 Mockito 用于与数据库交互相关的行为 [关闭]
【发布时间】:2012-02-17 11:47:18
【问题描述】:

这几天我一直在网上搜索这个问题的简单答案。我现在希望有人引导我朝着正确的方向前进。我是一名软件实习生,目前正在研究 Enterprise Java Beans。

另外,为了确定我有多困惑,我的大脑不接受嘲笑甚至存根作为测试你拥有或可能开发的东西的正确方法。

【问题讨论】:

  • 你能问一个具体的问题吗?目前尚不清楚如何为您提供帮助。存根和验证可帮助您隔离系统的一部分,以便您可以对其进行测试,而测试结果不会受到系统其他部分行为的影响。这是你想知道的吗?
  • 您是否使用 DAO 模式进行数据库交互?
  • -1 表示没有问题。我有一点简历,你很困惑。
  • 请编辑您的问题,使其更具体。

标签: unit-testing dao mockito


【解决方案1】:

我的想法只是不接受嘲笑甚至存根作为一种正确的方式 测试你拥有或可能开发的东西

随着您获得更多经验,您将看到模拟/存根的价值。请记住,隔离测试是单元测试的职责。集成测试是另一回事。

对事物进行孤立的单元测试是建立工作功能基线的好方法。

隔离测试的唯一方法是使用模拟/存根。否则,您的许多测试最终将不得不访问数据库(在标准 Web 应用程序中),更不用说您需要为每个测试连接一整套组件。

考虑您必须对高级控制器进行单元测试的情况。该控制器使用一项服务,该服务使用 2 个 DAO。要测试控制器是否返回了正确的数据,您必须要么

1) 只需模拟服务,告诉它等待调用并返回一些数据,然后断言返回正确的数据。

2) 创建服务实例。创建每个 DAO 的实例,配置它需要的任何内部内容。将 DAO 放入服务中。用数据填充您的数据库。

这听起来像是更多的工作?请记住,服务本身是独立测试的,DAO 也是如此。

此外,考虑到模拟/存根的测试可以促进更简洁的设计。人们普遍认为,松散耦合、紧密集成的代码是做事的好方法。考虑如何测试事物自然适合这种设计。

【讨论】:

  • 发帖人询问“如何将 Mockito 用于与数据库交互相关的行为”。这是怎么回答的?
  • @david,我的回答更多是关于“我的想法只是不接受嘲笑甚至存根作为测试您拥有或可能开发的东西的正确方法。”
  • 非常感谢您的回答。我再也没有回过头来,但我现在已经掌握了它。
猜你喜欢
  • 2015-04-10
  • 2010-10-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多