集成测试才是目的
单元测试只是对每个小模块进行的测试,可以理解成每次提交的一个小功能。
最终系统的良好运行依赖于这些小模块之间良好协作。所以需要有集成测试
集成测试回滚数据,保证测试的可重复性
我们可以把 ApplicationContext 理解成 DI 容器,原本使用 DI 容器的优点就是可以不知
晓依赖是怎么产生的,而在这段代码里,却知晓了 DI 容器,这就完全打破了 DI 容器设计
的初衷(关于 Spring 的设计初衷,我在《软件设计之美》中专门 有一讲分析过,如果你
有兴趣可以去了解一下)。
在业务核心代码中出现 ApplicationContext 是一种完全错误的做法。一方面,它打破了
DI 容器原本的设计,另一方面,还让业务核心代码对第三方代码(也就是ApplicationContext)产生了依赖。
如果今天的内容你只能记住一件事,那请记住:业务代码不要过度依赖于框架。
采用轻量级的测试手段,保证代码的正确性
重构就是一个消除代码坏味道的过程。一旦你有了测试,你就可以大胆地重构了,因为任何修改错误,测试都会替你捕获到。