IoC 容器如何用于单元测试?使用 IoC 在大型解决方案(50 多个项目)中管理模拟是否有用?有什么经验吗?是否有任何适用于在单元测试中使用它的 C# 库?
最佳答案
一般来说,单元测试不需要 DI 容器,因为单元测试就是分离职责。
考虑一个使用构造函数注入(inject)的类
public MyClass(IMyDependency dep) { }
在您的整个应用程序中,IMyDependency
背后可能隐藏着一个巨大的依赖图,但在单元测试中,您将其全部扁平化为单个 Test Double。 .
您可以使用 Moq 或 RhinoMocks 等动态模拟来生成测试替身,但这不是必需的。
var dep = new Mock<IMyDependency>().Object;
var sut = new MyClass(dep);
在某些情况下,auto-mocking container可以很好,但您不需要使用与生产应用程序相同的 DI 容器。
关于c# - 使用 IoC 进行单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1465849/