使用旧代码并尝试创建测试时,我经常从类或方法中分离出依赖关系,因此我可以使用mock编写这些依赖关系的单元测试。依赖关系通常以调用静态类和对象的形式出现,这些静态类和对象是使用构造函数中的new关键字或该类中的其他位置创建的。最简单,最快的方式来打破类的所有依赖关系
在大多数情况下,静态调用是通过包装静态依赖来处理的,或者如果它的一个单例模式(或类似的)以StaticClass.Current.MethodCall()的形式传递该依赖, 。
在大多数情况下,构造函数中new关键字的使用仅仅是通过在构造函数中传递该接口来替换。
在大多数情况下,在类的其他部分使用new关键字,可以通过与上面相同的方法处理,或者在需要时创建工厂,并在构造函数中传递工厂接口。
我总是使用Resharpers重构工具来帮助我解决所有这些问题,但大多数情况仍然是手工劳动(可能是自动化的),对于一些遗留类和方法来说,这可能是一个非常单调乏味的过程。有没有其他的重构插件和/或工具可以帮助我在这个过程中?是否有“通过单击”突破这个类的所有依赖性?“重构工具? =)
对我来说,听起来像所有这些步骤是很多开发人员和常见问题的常见问题,并且在我尝试将插件写入Resharper或CodeRush之前,我不得不问,因为有人可能已经尝试过这种方法。
新增:
在反射到下面的答案:即使你可能不希望打破眼前的一幕(点击总量突破了可能会导致更多的问题比它帮助)仍然能够简单地打出来1个方法依赖关系,或者1-2个依赖关系很容易,会有很大的不同。
此外,重构代码有一个“尝试看看会发生什么事情,只是为了学习如何将所有东西放在一起”,并且一次点击就可以帮助处理吨,即使你不检查代码。
除了下面提到的遗留代码现在的经典工作方式,您可能会发现.NET中的Brownfield应用程序开发有趣:http://www.manning.com/baley/ – AakashM 2010-06-30 14:49:53