一尘不染

使用IoC进行单元测试

c#

如何将IoC容器用于单元测试?使用IoC在大型解决方案(超过50个项目)中管理模拟是否有用?有经验吗?是否有任何在单元测试中很好地使用它的C#库?


阅读 352

收藏
2020-05-19

共1个答案

一尘不染

一般而言,单元测试不需要DI容器,因为单元测试全部与职责分离有关。

考虑使用构造函数注入的类

public MyClass(IMyDependency dep) { }

在您的整个应用程序中,可能隐藏着一个巨大的依赖图IMyDependency,但是在单元测试中,您将其全部压平为单个Test
Double

您可以使用Moq或RhinoMocks之类的动态模拟来生成Test Double,但这不是必需的。

var dep = new Mock<IMyDependency>().Object;
var sut = new MyClass(dep);

在某些情况下,可以使用自动模拟容器,但是您不需要使用生产应用程序使用的同一DI容器。

2020-05-19