单元测试的目标是覆盖代码单元的功能逻辑,要做到覆盖功能逻辑,就要覆盖输入的所有分类。一个函数,输入包括两方面:外部输入,内部输入。外部输入就是函数外部可以设定的输入,包括参数,全局变量,成员变量,设定这些输入相对比较容易,关键问题是内部输入。
一个函数,对于调用底层函数获得的数据,是如何处理的呢?跟参数一样,也是分类处理,如下图。所以,测试时也要分类检测,这与参数没什么区别。这就是内部输入。
测试时,内部输入需与外部输入同等对待,即检测代码是否对获得的各种数据包括内部取得的数据做了合适的判断和处理。