测试数据

测试替代技术

Mock和Stub的本质区别:测试期待结果的验证(Assert and Expectiation)

  • 对于 Mock 代码来说,我们的关注点是 Mock 方法有没有被调用,以什么样的参数被调用,被调用的次数,以及多个 Mock 函数的先后调用顺序。所以,在使用 Mock 代码的测试中,对于结果的验证(也就是 assert),通常出现在 Mock 函数中。
  • 对于桩代码来说,我们的关注点是利用 Stub 来控制被测函数的执行路径,不会去关注 Stub 是否被调用以及怎么样被调用。所以,你在使用 Stub 的测试中,对于结果的验证(也就是 assert),通常出现在驱动代码中。

桩代码(stub)

  • 用来代替真实代码的临时代码
  • 对顶层或上层模块进行测试时所编写的替代下层模块的程序
  • 仅用于替代当前代码依赖

目的:

  • 起到了隔离和补齐的作用,使被测代码能够独立编译、链接,并独立运行
  • 还具有控制被测函数执行路径的作用

Mock

  • 经过编程,可以做检查并发送符合规则的响应
  • 更强大的能力:验证这个 Mock 对象在方法调用过程中的使用情况,比如调用了几次

具体框架

Mock框架

单元测试

录制回放类

录制 HTTP/HTTPS 请求然后回放之前录制的HTTP事务(称为情景)