1、基本断言
基本断言应该表达某种假设或意图,它们应该声明代码的行为。基本断言的问题在于它缺乏意义,因为断言的基本原理和意图隐藏在看上去无意义的单词和数字背后,造成难以理解,并且难以验证断言的正确性。
改进方法:
- 要用被测功能的语言和词汇表达你的断言,每看到!=或==比拉符的断言,持别是涉及-1或0的数字时,就要考虑抽象层次是不星正确,如果断言不能立即显示出意义,就很可能是基本断言,需要重构。
2、过度断言
过度断言( hyperassertion)是如此谨慎地敲定每个待检查行为的细节,以致它变得脆,并且掩盖了整体广度和深度之下的意图,它可能会使测试打断的频率远超平均水平,可能造成无论任何变化都会造成输出与期望不同。
改进方法:
- 识别无关细节并将其从测试中移除
- 拆分测试。
3、按位断言
按位断言是基本断言的一个特殊情况,也称为"这个运算符又干了什么?”,通常出现在断言两个布尔值的位运算结果是否为真的情兄下,断言的可读性会较差。
改进方法:
- 用一个或多个布尔运算符来替换位运算符,清晰地依次表达期望。
4、附加细节
可读性源于快速和忠实地向读者展示意图、目的和意义。如果附加细节过多,会对可读性造成障碍。
测试的本质应当是开门见山,为此应该遵循以下几个准则:
- 将不必要的安装抽取到私有方法或安装部分
- 起个恰当的、描述性的名字
- 二个方法内尽量只有一个抽象层次
5、人格分裂
测试的人格分裂,是指测试本身体现了多个测试,一个测试应当仅检查一件事并妥善执行。
改进方法:
- 将一个测试类分解为多个测试类
- 去掉重复内容
- 分离场是,抽取测试方法。
6、逻辑分割
如果代码是分散的,需要额外的精力去寻找,就会增加你的认知负担。
在则试代码中信息分散的例子是,在被测领域中普遍地引入对更大数据块的操作,而非针对偶然的float,int或名为 firstName的 Sting.
改进方法:
最简单的方去是内联外部信息,将所有代码和数据都移动到测试中来使用,某些数据和逻辑适合内联,另一些最好保持独立。简单的判定原则:
- 如若短小则内联之。
- 如若过长,则将其藏到工厂方法或测试数据收据构建器背后。
- 如若不便,则拉进单独的文件
如果非要选择外部数据文件,也要遵循下面准则:
- 修剪出必须的数据
- 将数据文件与使用它们的测试放在同一文件夹中
- 无论选择哪种结构,都要计团队觉得方便,并坚持下去
7、魔法数字
魔法数字是嵌入到赋值、方法调用和其他语句的数字值。
改进方法:
- 用常量变更替换它们,从而给予数字更加想要表达的意思,使代码更容易阅读。
8、冗长安装
将大块用来准备测试场景的代码移动到安装方法中
改进方法:
- 从安装中抽取无关细节,放入私有方法。
- 给予适当的、描述性的命名
- 在安装中争取做到同一抽象层次
9、过分保护
在测试代码中运用“增加守卫语句和其他空值检查”的策略,保护测试免于以NullPointerException而失败。
改进方法:
删除冗余的断言。即使没有assertNotNull,你也能点击导致 NullPointerException的栈跟踪,带你到 assertEquals对于空引用报错的那行。
——————————————————
参考原文:
http://www.yujinxiangqiangzhi.com/rjgc//m/9949.html