在日常开发过程中, 经常遇到使用三方库闭源或开源库的情况, 这些库或是自己公司写的, 或是其他公司提供的, 但总地来说, 库的作者为了让库适应更多受众, 故就需要把库做得更加通用. 而作为使用者的我们, 却更希望库能尽可能满足我们自己的需求, 这样的一个情况本身就是现实. 而正是这样的情况, 会造成我们的系统和三方库之间存在天然冲突.(正常的界面应该是通过接口来连接的, 而不正常边界却是"焊接"的情况).
如果接口不满足要求, 在确切了解了三方库的接口后, 可以对三方接口再次封装为我们需要的接口. 然后再使用. 这样的封装通过"适配器"完成.
- 什么是代码 boundary? 这里理解为代码的界面更为恰当, 就是指这个模块的接口.
- 关于测试: 每个单元测试的代码单元中包含尽可能少的 assert, 为什么? 因为被测试的代码只做一件事, 而这一件事的测试可能有多个预期, 多个预期的前提是在多个不同的输入的情况下, 所以将每一个预期根据不同的输入, 写到不同的单元测试方法内即可. 但保证每个单元测试方法中只包含最少的结果预测 assert. (保持尽可能少的 assert, 但并非只能是一个. 需要保证的是一个单元测试方法中只包含测试一件事的结果, 这样就和方法的做一件事相对应.), 总结起来看就是要保证每个单元测试中只包含单一概念.
- 单元测试的规定: F.I.R.S.T
- Fast: 单元测试执行速度应该快
- Independent: 每个单元测试不应依赖另外的单元测试.
- Repeatable: 在所有环境(生产环境, 开发环境, QA 环境等等)下单元测试都应该能重复进行.
- Self-Validating: 单元测试只能有两个结果(成功或失败).
- Timely: 单元测试应该在生产代码之前编写. 因为在生产代码之后写的话, 代码将很难测试.(因为不是以测试为前提来写生产代码的).






网友评论