FIRST规则(Fast、Independent、Repeatable、Self-Validating、Timely)
单元测试想必大家都很熟悉,即便没有真正的做过单元测试,但肯定也听过单元测试以及单元测试的重要性。==完善的而又规范的单元测试,不仅能够能够有助于自己写出简洁的代码,使代码变得可扩展、可维护、可复用,还能够极大的提到代码的健壮性==。
1.TDD三定律
-
1.在编写能通过的单元测试前,不可编写生产代码
-
2.只可编写刚好无法通过的单元测试,不能编译也算不通过
-
3.只可编写刚好足以通过当前失败测试的生产代码
测试与生产代码一起编写,测试只比生产代码早写几秒钟。这样写程序,测试将覆盖所有生产代码。测试代码量足以匹敌生产代码量,导致令人生畏的管理问题。
2.保持测试整洁
-
1.脏测试等同于没测试,测试必须随生产代码的演进而修改,测试越脏,就越难修改
-
2.测试代码和生产代码一样重要,它需要被思考、被设计和被照料,它该像生产代码一般保持整洁
-
3.如果测试不能保持整洁,你就会失去它们,没有了测试,你就会失去保证生产代码可扩展的一切要素
3.整洁的测试
作者这里遵循了重要的事情说三遍的原则:可读性,可读性,可读性。如何做到可读,那就是要保证测试代码同其他代码一样,明确,简洁,足具表达力,这也是这本书一直强调的事情。
示例(反例代码): 正例
以上代码为:构造-操作-检验(BUILD-OPERATE-CHECK)模式,第一个环节构造测试数据,第二个环节操作测试数据,第三个部分检验操作是否得到期望的结果
4.每个测试一个断言
-
1.JUnit中每个测试函数都应该有且只有一个断言语句
-
2.最好的说法是单个测试中的断言数量应该最小化
-
3.最佳规则是应该尽可能减少每个概念的断言数量 ,每个测试函数只测试一个概念
5.F.I.R.S.T
- 1.快速(Fast)测试应该够快
- 2.独立(Independent)测试应该相互独立
- 3.可重复(Repeatable)测试应当可在任何环境中重复通过
- 4.自足验证(Self-Validating)测试应该有布尔值输出,如果测试不能自足验证,对失败的判断就会变得依赖主观。
- 5.及时(Timely)测试应及时编写,再次强调,测试只比生产代码早写几秒钟。
6.参考文献
《代码整洁之道》 www.jianshu.com/p/0479b3ad7… www.jianshu.com/p/c44eca6ad…
关注公众号“程序员面试之道”
回复“面试”获取面试一整套大礼包!!!
本公众号分享自己从程序员小白到经历春招秋招斩获10几个offer的面试笔试经验,其中包括【Java】、【操作系统】、【计算机网络】、【设计模式】、【数据结构与算法】、【大厂面经】、【数据库】期待你加入!!!