模拟对象
编辑模拟对象,是软件开发中的程序部分,用于执行单元测试作为真实对象的占位符。 这些工具通俗地称为模拟。
完全隔离地测试单个对象并不总是可能或可取的。 如果要检查对象与其环境的相互作用,则必须在实际测试之前模拟环境。 这可能会很麻烦、耗时,甚至会受到限制或根本不可能。
在这些情况下,模拟对象可以提供帮助。 模拟对象实现接口,待测对象通过这些接口访问其环境。 它们确保以正确的参数和预期的顺序完整地进行预期的方法调用。 模拟对象返回的不是真实数据,而是之前定义的与测试用例相匹配的值。 因此,模拟对象可以用来模仿某种行为。
部署
编辑具体来说,模拟对象在“真实”对象时才有意义
- 在测试期间不会被“意外错误”破坏,
- 返回非确定性结果(例如当前时间或当前温度),
- 在准备或执行期间造成困难(例如测试用户界面),
- 应该显示难以触发的行为(例如网络错误),
- 速度慢或非常复杂(例如,需要在每次测试前初始化的完整数据库),
- 尚不存在(例如在较大的软件或硬件开发项目中),
- 必须仅出于测试目的(而非实际任务)提供信息和方法,
- 启动无法撤消或难以撤消的过程(例如,删除网络资源上的文件)。
与单元测试相反,集成测试测试由互连组件(单元)组成的整个系统。 通常不需要更多的模拟对象。
不同类型
编辑为了在模块测试期间隔离测试对象,可以实现辅助对象并用作替代品。 以下辅助对象是已知的:
Dummy 代码中传入但未使用的对象。 用于用值填充参数。FakeAn对象及其实现。 但是,实现是有限的,这意味着它不能在生产环境中使用。 fake 的一个典型例子是只在内存中临时存储数据的数据库。Stub 对象在调用特定方法时返回相同的输出,而不管输入。Mock 定义特定函数调用的对象,具有特定的传递值返回供应. 模拟框架通常用于创建模拟对象。Spy 记录调用和传递的值并在必要时返回它们的对象。 Fake、stub 或模拟对象被扩展为间谍。 或者,可以使用装饰器。Shim,ShivA 库,它拦截对编程接口的请求并自行处理(例如,使用伪造、存根或模拟对象)、更改传递的参数或重定向请求。
内容由匿名用户提供,本内容不代表vibaike.com立场,内容投诉举报请联系vibaike.com客服。如若转载,请注明出处:https://vibaike.com/366063/