18、模拟与桩代码在单元测试中的应用

模拟与桩代码在单元测试中的应用

1. 引言

在单元测试中,模拟(Mocking)和桩代码(Stubbing)是非常重要的技术。它们可以帮助我们隔离被测试的类,使其在一个可控的环境中运行,从而更准确地进行测试。模拟和桩代码本质上是一种特殊的类,用于替代真实的类,使测试过程更加灵活和可靠。

2. 虚假协作者的使用

在实际的单元测试中,有些情况使用真实的类进行测试是不现实的。例如:
- 测试一个在传感器辐射水平超过临界阈值时关闭核反应堆的 Java 类。为了让单元测试运行而向真实传感器发射辐射,或者每次运行单元测试都关闭核反应堆,这显然是不现实的。
- 测试一个在发票未按时结算时向客户发送提醒邮件的 Java 类。在单元测试中重现延迟付款的情况很困难,而且每次运行单元测试都发送真实邮件也是不现实的。

在这些情况下,我们需要使用虚假协作者(Fake Collaborators)。虚假协作者是一种特殊的类,用于替代真实的类,使测试过程更加灵活和可靠。

2.1 使用虚假协作者隔离单元测试中的类

当真实系统或集成测试中出现 bug 时,很难立即确定是哪个类导致的问题。在单元测试中,我们可以使用虚假协作者为被测试类的协作者预编程“正确”和“预期”的答案,从而更专注于被测试类的功能,确保其自身没有 bug。

虚假协作者不是真实的类,原因如下:
- 它们只实现单元测试所需的方法,没有其他多余的方法。
- 当它们向真实类发出请求时,请求参数是预先编程并已知的。
- 当它们回答真实类的请求时,答案也是预先编程的。

从真实类的角度来看,一切都在正常运

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值