写点什么

更好的单元测试准则

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

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

关注

评论

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

写一个简单的SQL生成工具

不在线第一只蜗牛

数据库 sql

项目风险分析报告怎么写

易成研发中心

项目风险

项目管理软件分类有哪些

易成研发中心

项目管理

芯片赋能:粤港澳大湾区北斗产业的进阶之路

江湖老铁

一种极简单的SpringBoot单元测试方法

京东科技开发者

【HarmonyOS Next】地图使用详解(一)

oneal

HarmonyOS NEXT

Deepseek R1 的技术揭秘与低成本复现,中科院计算所工程师『致 Great』的分享实录已整理!

ModelWhale

人工智能 大语言模型 DeepSeek-R1

交易所开发:数字市场的核心动力

区块链软件开发推广运营

交易所开发 dapp开发 链游开发 公链开发 代币开发

中免日上使用阿里云向量检索服务 Milvus 版搭建在线推荐系统

阿里云大数据AI技术

大数据 向量检索 Milvus

如何选择CRM系统?15款工具详解

易成研发中心

CRM系统

深入理解分布式锁:原理、应用与挑战

京东科技开发者

程序员在未来 20 年,会被 ChatGPT 替代吗?

秃头小帅oi

5款 Syslog集中系统日志常用工具对比推荐

运维有小邓

Linux syslog IT 运维 linux日志管理

【用户投稿】手把手基于Apache SeaTunnel从PostgreSQL同步到Doris

Apache SeaTunnel

解码元翌智能:昇腾AI创新大赛金奖得主的技术拼图

Alter

DAPP(去中心化应用程序)开发全解析:构建去中心化应用的流程

区块链软件开发推广运营

交易所开发 dapp开发 链游开发 公链开发 代币开发

白宫加密货币峰会总结:政策信号释放,监管大幅松绑

TechubNews

比特币 比特币减半 加密市场 白宫加密峰会

有没有开源的企业网盘,是否适合企业使用?

易成研发中心

低空经济“蓄势腾飞”,数字样机保驾护航

DevOps和数字孪生

赛题讲解培训实录!2025年(第18届)中国大学生计算机设计大赛大数据主题赛“数据解读科技创新与社会变革”

ModelWhale

人工智能 大数据 中国大学生计算机设计大赛 4C大赛

前端调试实践

京东科技开发者

Svelte 最新中文文档教程(22)—— Svelte 5 迁移指南

冴羽

前端 前端开发 前端框架 Svelte SvelteKit

比特币再探 8 万关口,是时候为「熊市」做准备了

TechubNews

美股 黄金价格 经济趋势

低代码开发模式与传统模式效率对比研究:效率提升97%的案例分析与技术实现

JeeLowCode低代码平台

低代码 低代码平台 低代码, 低代码选择

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