如何将IoC容器用于单元测试?使用IoC在大型解决方案(超过50个项目)中管理模拟是否有用?有经验吗?是否有任何在单元测试中很好地使用它的C#库?
一般而言,单元测试不需要DI容器,因为单元测试全部与职责分离有关。
考虑使用构造函数注入的类
public MyClass(IMyDependency dep) { }
在您的整个应用程序中,可能隐藏着一个巨大的依赖图IMyDependency,但是在单元测试中,您将其全部压平为单个Test Double。
IMyDependency
您可以使用Moq或RhinoMocks之类的动态模拟来生成Test Double,但这不是必需的。
var dep = new Mock<IMyDependency>().Object; var sut = new MyClass(dep);
在某些情况下,可以使用自动模拟容器,但是您不需要使用生产应用程序使用的同一DI容器。