阿里云飞天发布时刻,领先大模型限免,超7000万 tokens免费体验 了解详情
写点什么

更好的单元测试准则

  • 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:483567
用户头像

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

关注

评论

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

程序员副业大赏:一边赚钱一边提升技能!

伤感汤姆布利柏

好用的文本编辑器推荐

霍格沃兹测试开发学社

探索OpenCV:图像处理的利器

霍格沃兹测试开发学社

深度解析:Allure报告如何提升你的测试效率?

测吧(北京)科技有限公司

测试

超越传统模式:商品企划系统如何助力鞋服品牌创新突围?

第七在线

检测LED单元板的好坏的方法

Dylan

LED display LED显示屏 led显示屏厂家

数据中台与低代码:数字中国战略的关键技术

不在线第一只蜗牛

数据中台 低代码 开发语言 数字转型

轻松实现UniApp Xcode上传IPA无需Mac,appuploder一键上传助你高效开发!

深入理解 Docker Run 命令:从入门到精通

霍格沃兹测试开发学社

淘宝用户购物行为分析

Databend

长期有效!开放原子基金会联合龙蜥社区推出的「人人都可以参与开源」学习赛上线

OpenAnolis小助手

开源 操作系统 龙蜥社区 开放原子 人人都可以参与开源

MWC 2024丨中国电信柯瑞文:建设云网融合的新型数字基础设施

天翼云开发者社区

云计算 互联网大会 算力网络 世界移动通信大会

百度营销发布「生成商业新未来」特刊

科技热闻

合合信息入选上海市网信办“2023年度网络数据安全风险评估试点工作优秀单位”

合合技术团队

安全 数据安全 合合信息

SD-WAN架构比MPLS更具哪些优势

Geek一起出海

面试官:说说volatile底层实现原理?

王磊

Java 面试

从 0 开始构建知识图谱的 5 个启动建议

悦数图数据库

知识图谱

利用观测云实现 Kubernetes 多集群可观测

观测云

k8s

文心一言 VS 讯飞星火 VS chatgpt (204)-- 算法导论15.3 3题

福大大架构师每日一题

福大大架构师每日一题

云数据库常见问题与解决方案:从开发工程师的角度看

天翼云开发者社区

云计算 云数据库

杭州悦数受邀参加《大模型驱动的智能知识图谱》标准首次专家研讨会

悦数图数据库

MCtalk·CEO对话×影刀RPA丨不确定的周期,越要找到确定的竞争优势

ToB行业头条

NFT矩阵公排合约系统开发

l8l259l3365

掌握 Docker PS 命令:轻松管理容器

霍格沃兹测试开发学社

开营通知 | ​行业专家+名校教授强强联合,带你快速掌握人工智能测试开发技术,提升你的竞争力

测吧(北京)科技有限公司

测试

企业数字化转型的第一步:由被动多云向主动多云转变

品高云计算

容器镜像服务:云原生时代的核心基石

天翼云开发者社区

云计算 容器服务

集成专栏丨解析WSDL自动生成API

inBuilder低代码平台

开源 低代码 集成 连接器

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