范围
开发人员-dev的对代码质量的保证方式,进行的代码级别验证或者方法论驱动写出质量能达到要求的代码,非测试人员范围内的测试。
概念区分
单元测试 单元测试只测试程序单元自身的功能
集成测试 将所有模块按照概要设计要求组装成为子系统或系统,验证组装后功能以及模块间接口是否正确的测试工作
atdd:ATDD是一种团队行为及过程,基于集成测试
例如:如果需要启动spring容器来进行,已经属于集成测试范围,参考springdoc,spring-test包本身定义为集成测试,单元测试需要mock注入;
mock东西太多,所以我们会启动spring容器来注入;但如果是tdd这种运行速度肯定不是我们能接受的。
方法论
现状与问题
有鄙视没有单元测试的代码,有觉得没有测试就没法写代码的,但项目里面很多处于中断使用或者干脆没有。原因各种各样,最后结果是没有做或者中途停止。
常见如下:
没有流程上统一约束,全靠开发自身决定
没有可度量的方式,无法衡量
进度原因放弃,意味着价值比例总体还是体现占比较小
简单业务crud,很明显,没几行业务代码,是否值得测试,大量依赖其他系统的测试又需要很多mock
集成测试调用外部系统无法反复进行,对其他系统造成的脏数据问题
尝试改进
通过测试增加代码质量,这件事本身可能会遇到很多难点,不是搭建一个demo的测试框架就可以解决。测试可能会促进你代码的改变,比如mock太多
提供统一框架,仅可能解决一些常见点,但具体问题还是一个个解决。ATDD要求整体流程配合,先做单元测试与集成测试的交集点。
简单crud通过测成准备数据解决,复杂逻辑需要单元测试覆盖,再集成测试仅可能覆盖。集成测试一些点可以mock,比如外部调用。
准备结合我们项目选用测试集成如下:支持动态语言groovy并支持javaspock spring-test H2 junit jersey-test Mockito