【发布时间】:2010-03-07 01:10:51
【问题描述】:
有some cases,其中单元测试不适用于项目。
我正在研究控制反转和依赖注入实用程序,我想知道是否有充分的理由使用它而不是使单元测试更容易。
--更新
好的,我们来分析一下引用的优势之一:耦合少。 您从子类型中取出耦合,并将耦合添加到需要创建要注入的对象的处理程序类型。
没有单元测试,这种耦合转移(不是耦合消除)有什么优势。
【问题讨论】:
-
“耦合传输”是什么意思?如果我修改我的记录器以使其接受 Stream 接口而不是特定的流实现,我将不再与具体实现耦合——我没有传输任何东西。确实,我的应用程序必须指定它们将使用哪些具体实现——这就是您所指的吗?
-
@Jeff Sternal 是的,我指的是。
-
应用程序总是与具体实现耦合,无论它们控制它们的依赖关系还是它们使用的模块控制这些依赖关系。如果我的 logger 访问文件系统,那么我的 logger 和使用它的应用程序都会耦合到文件系统实现。
-
是的,所以当你注入你的依赖时,你就是在转移耦合。这就是我的看法,如果我错了,我想了解。
-
您没有“转移”耦合,因为应用程序已经耦合到具体实现。
标签: dependency-injection inversion-of-control