测试驱动开发:控制反转(IOC)

时间:2010-06-21 23:20:45

标签: tdd

我用Google搜索并在IOC上阅读了一些好的答案/帖子,并了解整体概念。我有一个现有的框架(没有很好的设计)和TDD是一个想到写一些NUNIT测试夹具。我是否可以在现有代码库上使用IOC而不更改现有代码库?或者从头开始设计应用程序时使用IOC?

2 个答案:

答案 0 :(得分:2)

我使用这种技术将遗留代码转换为依赖注入的美容:

  • 如果我只为一个类创建一个对象,请将其设置为一个字段并在构造函数中创建它。
  • 如果我创建了多个对象,请为该对象创建一个工厂并在构造函数中创建工厂。
  • 将接口放在对象上(我喜欢“IDoThisForYou”样式,因为它可以让我轻松地理解类的角色,但是无论什么对你有用)。
  • 级联构造函数 - 在对象上创建一个构造函数,然后通过接口将它们传递给另一个。

现在您可以在测试中模拟和DI接口。实际的级联很简单,你可以通过检查。最终你将达到可以使用容器的程度,然后你将删除第一个构造函数;这是迈向这一步的第一步。

(不要用大量数据模拟域对象 - 这不值得。)

祝你好运!

答案 1 :(得分:1)

它不一定是从头开始,但显然你会构建一些事情来让IOC变得非常轻松,如果你这样做了,

但它可以修补....取决于你的系统是如何分离的,这可能是也可能不是一项大工作。基本上它是一个对象创建模式,所以它只影响创建点....如果那些在各地完成,那么它将需要一些清理。

我首先要完成单元测试。担心IOC是第二个问题,实际上并不需要做TDD