DI让测试驱动开发不再是一句空话
如今,各种开发方式层出不穷,像XP开发,敏捷软件开发,测试驱动开发,等等。
也许明天有会冒出来很多不同的东东,所以说阿,软件这个行业总能给你一些新的东东。
这里先介绍下相关概念。 首先是时下非常流行的概念IOC(Inversion of control),而IOC有向接口一样,有很多种实现策略,其中工人比较不错的是DL(Dependency Lookup),DI(Dependency Injection);而其中的DI又有常用的2种实现策略Setter Injection 和 Constructor Injection .
由于之前接触了一点点Spring这个优秀的框架,发现了他却又很多好处,其中一个就是方便了测试。不知道大家以前的Web系统是否方便写一些测试用例呢?例如JUnit集成测试。有些比较旧的项目中,应用代码太依赖于容器了,在应用代码中不时出现JNDI就是出现容器的API,这使得应用代码在脱离容器的情况下不可能运行,同时,这对集成测试也造成了一种难以消除的壁垒。
用过Spring 的人知道,Spring这个轻量级容器是一个非常不错的框架,其中它支持Setter Injection 和 Constructor Injection .这2种注入方式,我们一般情况下在应用代码中都使用Setter Injection,通常学要Constructor Injection 可以用Setter Injection代替,在应用代码重构时,通常也是这样。这样应用代码中不需要再依赖容器,应用代码中用到的所有资源都是通过JavaBean设置进来,代码本身不知道它从哪里来,也不需要知道它如何来的。这样,我们的应用代码在开发阶段,对主要的类和方法就可以方便的利用mock对象进行Junit测试了。
测试驱动开发因此不再是一句空话。