1) 好的单元测试必须遵守 AIR 原则 单元测试在线上运行时,感觉像空气(AIR)一样感觉不到,但在测试质量的保障上, 却是非常关键的。好的单元测试宏观上来说,具有自动化、独立性、可重复执行的 特点。 • A:Automatic(自动化) • I:Independent(独立性) • R:Repeatable(可重复)
2) 单元测试应该是全自动执行的,并且非交互式的。 测试用例通常是被定期执行的,执行过程必须完全自动化才有意义。输出结果需要 人工检查的测试不是一个好的单元测试。单元测试中不准使用 System.out 来进行 人肉验证,必须使用 assert 来验证。
3) 单元测试是可以重复执行的,不能受到外界环境的影响。 单元测试通常会被放到持续集成中,每次有代码 check in 时单元测试都会被执行。 如果单测对外部环境(网络、服务、中间件等)有依赖,容易导致持续集成机制的 不可用。 正例: 为了不受外界环境影响,要求设计代码时就把 SUT 的依赖改成注入,在测试时用 spring 这样的 DI 框架注入一个本地(内存)实现或者 Mock 实现。
4) 编写单元测试代码遵守 BCDE 原则,以保证被测试模块的交付质量。 • B:Border,边界值测试,包括循环边界、特殊取值、特殊时间点、数据顺序等。 • C:Correct,正确的输入,并得到预期的结果。 • D:Design,与设计文档相结合,来编写单元测试。 • E:Error,强制错误信息输入(如:非法数据、异常流程、业务允许外等),并 得到预期的结果。
以上内容摘自《Java工程师必读手册》电子书,点击https://developer.aliyun.com/ebook/download/7780 可下载完整版
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。