你的位置:首页 > 软件开发 > ASP.net > 模拟对象和存根

模拟对象和存根

发布时间:2015-12-04 16:00:02
在单元测试中存根和模拟对象处于一个非常重要的地位以下我就来说说我对两者的理解。1:什么是交互测试工作单元最终的三种结果类型:基于值的测试:验证函数返回值基于状态的测试:验证通过被测试函数之后状态的变化交互测试:验证一个对象如何向另一个对象(一般是第三方服务)发送消息(调用方法)重 ...

 在单元测试中存根和模拟对象处于一个非常重要的地位以下我就来说说我对两者的理解。

1:什么是交互测试

工作单元最终的三种结果类型:

  • 基于值的测试:验证函数返回值
  • 基于状态的测试:验证通过被测试函数之后状态的变化
  • 交互测试:验证一个对象如何向另一个对象(一般是第三方服务)发送消息(调用方法)

重点说一下交互测试:如果一个特定的工作单元最终的结果就是调用另一个对象那么就要进行交互测试。简单来说就是你无法判断你是否调用了这个方法,因为他的返回值是void,那么你只能通过其他方式来判断你确实调用了这个方法。这整个过程就就是交互测试。

2:模拟对象

什么是模拟对象:模拟对象也是伪对象,它可以验证被测试对象是否按照预期的方式调用了这个伪对象,因此来判断单元测试的成功或者失败。

举一个例子:小明由于作业没有做完,老师就让小明放学之后晚回家一个小时来写作业,那么今天老师有事就提前回家了,就让班长小亮来查看小明是否留下来一个小时在写作业。此时小亮就是我们说的伪对象,他就检测了小明是否晚回家一个小时。

3:模拟对象和存根的区别

1:存根上一篇已经说了现在我们看一下图

模拟对象和存根

很明显我们断言的对象是被测试类下面是模拟对象

模拟对象和存根

这个是对模拟对象的断言。

其实他们区别很小,他们的根本区别就是存根不会导致测试的失败而模拟对象却可以(存根由于断言是对被测试类所以不会导致测试失败,而模拟对象恰恰相反)

模拟对象就是来检测你的测试是否会失败。下面看例子

4:模拟对象和存根的使用

现在我引用一个外部的LogService专门记录错误日志,但是这个日志是void类型无法返回这个时候模拟对象就派上用场。我们先定义个一个日志服务接口

public interface ILogService  {    void ErrorLog(get='_blank'>string message);  }

 

海外公司注册、海外银行开户、跨境平台代入驻、VAT、EPR等知识和在线办理:https://www.xlkjsw.com

原标题:模拟对象和存根

关键词:

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

可能感兴趣文章

我的浏览记录