《C++代码整洁之道:C++17 可持续软件开发模式实践》 —2.5.4 一个测试一个断言
【摘要】 本节书摘来自华章计算机《C++代码整洁之道:C++17 可持续软件开发模式实践》 一书中第2章,第2.5.4节,作者是[德]斯蒂芬·罗斯(Stephan Roth),连少华 郭发阳 陈涛 译。
2.5.4 一个测试一个断言
我知道这是一个有争议的话题,但我会试着解释为什么我认为这很重要,我的建议是限制一个单元测试只使用一个断言。如下所示:
代码2-3 一个检查Money类的不等运算符的单元测试
有人可能争辩说我们还可以检查其他比较运算符(例如,Money :: operator==())在该单元测试中是否正常工作,只需添加更多断言就可以轻松实现这一点,如下所示:
代码2-4 问题:在一次单元测试中检查所有比较运算符真的是个好主意吗
我认为这种测试方法的问题是显而易见的:
如果由于某些原因而导致测试失败了,开发人员可能很难快速找到错误原因。最重要的是,前面一个断言的错误掩盖了其他的错误,也就是说,它隐藏了后续的断言,因为测试的执行被中断了。
正如单元测试的命名一节(2.5.2节)中所述,我们应该以精确且富有表现力的方式命名测试。通过多个断言,单元测试确实可以测试很多东西(顺便说一下,这违反了单一职责原则,参见第6章),并且很难为它找到一个好的名字,上面的...testAllComparisonOperators()仍然不够精确。
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)