测试视角下的代码功能呢
单元测试在一定程度上在反逼代码符合单一职责,有明晰的输入输出。
单元测试视角下的代码:程序功能就是接受输入,产生输出
|
要点 |
|
|
输入参数 |
最标准的输入 |
|
输出结果 |
最标准的输出 |
|
依赖的外部读 |
本质上也是一种输入,可以转化为【输入参数】;单元测试需要Mock |
|
入参作出参 |
本质上是出参,可以转化为【输出参数】 |
|
外部写服务 |
本质上是出参,可以转化为【输出参数】,返回操作对象,由调用方来发送命令;单元测试需要使用Mock基于行为测试。 |
分析演进
如果我们按照尽可能简单方便测试的角度,输入都转化为输入参数,输出都转化为输出参数,程序会变为什么样子呢?
可以看到,程序会最终演变为【准备数据阶段】,纯内存计算的【逻辑处理】阶段,以及使用最终处理完的数据发送持久化数据库之类命令的【命令发送】阶段,可以非常方便的对【逻辑处理】进行单元或集成测试。