写点什么

更好的单元测试准则

  • 2009-07-26
  • 本文字数:732 字

    阅读完需:约 2 分钟

Jimmy Bogard 写了一篇文章:“从你的单元测试中获得价值”,在文章中他给出了三条规则:

  1. “测试名称应该从使用者的角度来描述是什么以及为什么”;核心思想是一名开发者应该能够从测试名称理解测试行为是什么样的。
  2. “测试也是代码,爱他们吧”;仅在产品代码中做重构是不够的。易于理解的测试更易于维护,而且后来的人也更容易弄清楚。 “我憎恨、憎恨长而复杂的测试。如果一个测试的 setup 方法有 30 行,请将这些代码放在一个 creation 方法中。一个长测试会激怒开发者并让其头昏眼花。如果在产品代码中没有长方法,为什么会允许在我们的测试代码中有长方法?”
  3. “不要设定单一 fixture 的模式 / 组织风格”;通常情况下是一个类对应一个 test fixture,但有时候这样的标准并不适用。

Lior Friedman 补充:“规则#0——测试外部行为而不是内部结构。” 或者,测试一个类的期望行为而不是它的目前结构。

Ravichandran Jv 补充了他自己的规则:

  1. 尽可能做到每个测试一个断言。
  2. 如果在一个测试中有任何“if else”语句,将语句分支移到单独的测试方法中。
  3. 如果被测试的方法有 if else 分支,该方法应该被重构。
  4. 测试方法名称应该表明是某种测试。例如,TestMakeReservation 与 TestMakeNoReservation() 是不同的。

NUnit 的作者 Charlie Poole 再次说明:每测试一断言的说法为一个“逻辑断言”,他说:“有时,由于被测试的 api 缺乏表达能力,你需要写多个断言语句来获得期望的结果。在 NUnit 框架 api 的开发中,很多工作就是试图让一个断言做更多的工作。”

Bryan Cook 提出了他自己的列表:

  1. 实作:Fixture 命名保持一致
  2. 实作:模拟目标代码的命名空间
  3. 实作:Setup/TearDown 方法命名保持一致
  4. 考虑:分离测试与产品代码
  5. 实作:按功能给测试命名
  6. 考虑:在期望异常的命名中使用“Cannot”作为前缀
2009-07-26 01:483787
用户头像

发布了 47 篇内容, 共 13.1 次阅读, 收获喜欢 3 次。

关注

评论

发布
暂无评论
发现更多内容

Python创建虚拟环境报错:Error: Command......

codists

Python

产品经理如何做好需求管理和分析

易成研发中心

需求管理 需求分析

Python哪个框架合适开发速卖通商品详情api?

科普小能手

API Python框架 Python开发 API 接口 速卖通API接口

体验免费开箱即用的AI工具:Blackbox.AI

袁袁袁袁满

人工智能 ChatGPT 免费AI工具 GPT-4o 大模型工具

Windows - 内存优化

沉默的老李

内存 windows 11

鸿蒙原生开发手记:01-元服务开发

少湖说

鸿蒙 HarmonyOS

LED显示屏的亮度真的是越高越好吗?

Dylan

屏幕亮度 LED显示屏 全彩LED显示屏 led显示屏厂家

数聚存储,智慧未来:浪潮信息分布式存储在人工智能时代的创新与应用

财见

需求管理和产品规划有什么异同点

易成研发中心

需求管理 需求管理工具

软件测试类文档,测试文档合集,软件全套资料集(原件)

金陵老街

软件文档 测试文档

IaaS、PaaS和SaaS的区别

兮动人

IaaS、PaaS和SaaS

微创软件海外拓展新动向:日本Cosmo Design公司被纳入版图

财见

亿珑能源控股有限公司与TMT Acquisition Corp完成合并

财见

使用 DFU 模式修复或恢复 Mac 固件

sysin

Mac DFU

如何在 Go 项目中隐藏敏感信息,比如避免暴露用户密码?

左诗右码

鸿蒙Flutter实战:13-鸿蒙应用打包上架流程

少湖说

鸿蒙 HarmonyOS

伟创力收购JetCool以扩大数据中心和电源产品组合

财见

ACCA联合发布《2024年中国共享服务领域调研报告》,揭示行业数智化转型新趋势

财见

Spring高手之路25——深入解析事务管理的切面本质

砖业洋__

spring 事务管理

鸿蒙原生开发手记:02-服务卡片开发

少湖说

鸿蒙 HarmonyOS

鸿蒙原生开发手记:03-元服务开发全流程(开发元服务,只需要看这一篇文章)

少湖说

鸿蒙 HarmonyOS

魔改 Typora 主题,造就 CodeVeil!

沉默的老李

Typora 定制化 开源、

更好的单元测试准则_研发效能_Mark Levison_InfoQ精选文章