【ArchSummit架构师峰会】探讨数据与人工智能相互驱动的关系>>> 了解详情
写点什么

更好的单元测试准则

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

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

关注

评论

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

开源合规标准实践-“心寄源”法律沙龙(2023第六期 | 总第十一期)成功召开

开放原子开源基金会

适用于Mac平台的Git客户端 Fork

展初云

git Mac Mac软件

性能测试的实践痛点和解决方法

老张

性能测试 技术实践

Mac电脑轻级思维导图软件 iMap Builder免激活中文版

mac大玩家j

思维导图 Mac软件 mac思维导图 思维导图软件

华为云CCE产品文档优化升级

华为云原生团队

云计算 容器 微服务 云原生

三维可视化神器带来无限可能,原来三维场景也可以如此轻松实现

袁袁袁袁满

人工智能 三维城市建模

EVE-NG的环境导入QEMU组件了解一下

小魏写代码

适用于 macOS 的温度和风扇速度控制工具 TG Pro

展初云

Mac Mac软件 风扇控制

创建CI/CD流水线中的IaC前,需要考虑哪些事项?

SEAL安全

DevOps CI/CD IaC 企业号10月PK榜

mac电脑温度和风扇速度控制工具 TG Pro最新激活版

胖墩儿不胖y

Mac软件 系统监控软件

一文读懂多云CDN

火山引擎边缘云

CDN CDN加速 CDN技术 CDN带宽

间接采购,集团现金流优化的“小成大就”

用友BIP

数智采购

PDF文件阅读和编辑软件 PDF Reader Pro

展初云

Mac PDF pdf阅读器 pdf编辑工具

第6期 | 用友BIP项目云,为企业项目管理数智化而生

用友BIP

项目管理

【新产品】DPEasy 一款高效的数据库安全风险扫描工具,即将上线!

BinTools图尔兹

数据库 数据库安全

Nacos注册中心有几种调用方式?

王磊

Java 面试

Web3开发:Web3 的兴起对加密货币发展的影响

区块链软件开发推广运营

交易所开发 dapp开发 区块链开发 链游开发 NFT开发

Wirecast Pro for Mac(视频直播与制作软件) v16.0.2激活破解版

mac

苹果mac Windows软件 Wirecast Pro Wirecast Pro软件 流媒体软件

sip中继的内容介绍

ctsxiyou

SIP sip中继

行业底部期,水泥建材企业如何有效进行数智人力管理升级?

用友BIP

流程制造

推出 Amazon Lightsail for Research

亚马逊云科技 (Amazon Web Services)

Amazon Lightsail

火山引擎ByteHouse:只需2个方法,增强ClickHouse数据导入能力

字节跳动数据平台

数据库 大数据 云原生 Clickhouse 数仓

CQ 社区版 V2.5.0 发布 | 开放在线试用、自定义高危操作、新增数据源Phoenix、Trino等

BinTools图尔兹

oceanbase 数据库管控 polarDB trino CloudQuery

某头部证券公司决策:为什么首选 CloudQuery 数据库管控平台?

BinTools图尔兹

案例 数据库安全 客户体验

亚马逊云科技生成式 AI 构建者大会精彩回顾

科技热闻

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