关于单元测试

关于单元测试

特性

  • 自动、可重复的
  • 容易实现
  • 一旦写好,将来都可使用
  • 任何人都可以运行
  • 单击一个按钮就可运行

单元测试与集成测试的区别

集成测试运行多个集成到一起的代码单元,用来确认软件中应该出现的一个或多个预期结果,而单元测试通常只鼓励运行和测试某个单元

测试方法命名规则

[被测方法]_[场景]_[预期行为]

应遵循的原则是一个测试类中最多只有一个Mock对象,其余为Stub对象

Stub对象

对代码单元中现有依赖项的一个替代品,可认为控制,通过使用Stub对象无需涉及依赖项即可对代码进行测试,因为Stub对象可以认为控制其方法的结果,达到解除依赖的目的

StubMock的区别

  • Stub对象不会使测试失败,Mock对象可以使测试失败,Mock对象中会保存对象的状态用于assert
  • 使用Stub对象时Assert断言都是针对被测试类的,使用Mock对象则是对模拟对象进行断言

不需要对私有方法进行单元测试(在满足第三条的情况下)

  • 私有的方法一定是供暴露出来的方法调用的,测试暴露方法,也就同时测试了私有方法,如果做不到,是否代码有问题?
  • 单元测试的目的是为了保证你修改复用代码时不会影响到所有引用这段代码的程序,private方法本来就不能被别的类引用,所以不需要单元测试来保证其正确性
  • 虽然不测试,但是是建立在以下原则上的
    • 你不应该有任何方法是从一开始设计出来就是private的,因为你的每段程序都应该在单元测试的驱动之下产生,而测试是不可能驱动出来一个private方法的
    • 那么private从哪里来?只能从重构来。所以private方法是不需要测试的,因为它是重构的产物,而重构是不改变程序可观察行为的
    • 既然行为不改变,测试自然也不需要有任何改变,所以不需要针对private方法建立任何新的测试

一些原则

  • 测试用例能验证函数的正确性
  • 测试用例尽可能涵盖边界条件
  • 一些异常和错误处理

Stub

不可以打桩的情况:

  • 不可以对exit函数打桩,编译器做了特殊优化
  • 不可以对纯虚函数打桩,纯虚函数没有地址
  • static声明的普通内部函数不能打桩,内部函数地址不可见

参考文章

Unit Test

Unit Test](https://www.cnblogs.com/phenixyu/p/3965173.html)

C++单元测试!写的很好!!转

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值