测试驱动开发(TDD)确保依赖注入(DI)?

时间:2013-12-06 08:48:18

标签: dependency-injection tdd

抱歉可能是一个糟糕的问题,但我有点困惑。

TDD会帮助确保DI吗?或者是相反的方式(TDD需要DI)。

3 个答案:

答案 0 :(得分:3)

TDD是一种设计和开发软件的方法。

依赖注入是一种允许在运行时或编译时在给定依赖项接口的多个实现中进行选择的技术。

虽然有人可能认为这两者是独立的,但是在没有DI的情况下进行TDD是可能的,但很难。因此,我认为对大中型项目进行TDD确实需要依赖注入。

答案 1 :(得分:3)

这实际上是一个非常好的问题。

我想说TDD的DNA没有任何内容使它与依赖注入有内在联系。事实上,TDD中的重构步骤有时会导致向外部依赖项提取行为,然后可以选择通过其构造函数将其注入到测试类中。没有系统的,如何管理依赖关系更多的是重构者自己的品味。

反过来也是如此 - DI中的任何内容都不会强迫您使用TDD方法编写代码。 DI确实提高了可测试性,但这并不一定意味着测试 - 首先或Red-Green-Refactor周期。

然而,像Outside-In TDD这样的TDD的后续改进/专业化确实大量使用依赖注入,而TDD从业者通常也是SOLID原则的支持者,其原则包括依赖性倒置。隔离和自动模拟框架等流行工具也将TDD和DI结合在一起。这可能就是为什么这两种做法经常被一起使用和讨论的原因。

答案 2 :(得分:2)

都不是。 TDD应该有助于设计更好的软件。 更好的设计可能会使用控制模式的反转

DI是IOC模式的实现