遗留系统的单元测试的mock技巧

大多数非IT类的外企,基本上都会有一些非常老的遗留系统,对于这些遗留系统的维护和开发有时候是非常痛苦的,想要写单元测试去对一小片代码进行测试有时候非常困难,需要准备的资源非常多,比如datasource,properties文件,jndi等,在这种情况下,如果我们使用继承或者代理的方法来处理,是不适用的,因为代码的强耦合性会使我们无法将继承或者代理的类注入到要测试的类中。这种情况下,我们可以使用aspectJ,在运行时改变方法返回的结果来使用我们自己的mock资源,具体的案例可以参看下面这篇文章。http://www.infoq.com/articles/refactoring-legacy-applications,写的非常不错。其实我们也可以用Javassist,asm或者bcel在运行期载入或者动态生成我们自己的类,然后修改Java class中的内容来使用mock的资源,不过复杂度高了些,毕竟aspectJ已经足够啦。

相关推荐