为了账号安全,请及时绑定邮箱和手机立即绑定

使用IoC进行单元测试

使用IoC进行单元测试

C#
翻翻过去那场雪 2019-07-06 16:48:31
使用IoC进行单元测试如何使用IoC容器进行单元测试?使用IoC管理大型解决方案(50+项目)中的模拟有用吗?有什么经验吗?任何在单元测试中使用它的C#库都很好吗?
查看完整描述

3 回答

?
烙印99

TA贡献1829条经验 获得超13个赞

一般来说,对于单元测试来说,DI容器不应该是必需的,因为单元测试都是关于分离责任的。

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

public MyClass(IMyDependency dep) { }

在整个应用程序中,可能隐藏了一个巨大的依赖图IMyDependency,但在单元测试中,您可以将其简化为单个试验双倍.

您可以使用动态模拟(如Moq或RhinoMocks)来生成TestDouble,但它不是必需的。

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

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


查看完整回答
反对 回复 2019-07-06
?
慕斯王

TA贡献1864条经验 获得超2个赞

如何使用IoC容器进行单元测试?

IoC将实施编程范例,从而使单元测试更容易(即使用模拟):接口的使用,没有新的(),没有单个的.

但是使用IoC容器进行测试并不是一个真正的要求,它只是提供一些工具,例如注入模拟,但您可以手动完成。

使用IoC管理大型解决方案(50+项目)中的模拟有用吗?

我不知道你用IoC管理模仿是什么意思。无论如何,IoC容器在测试时通常可以做的不仅仅是注入模拟。如果您有良好的IDE支持,使重构成为可能,为什么不使用它呢?

有经验吗?

是的,在一个巨大的解决方案上,您比以往任何时候都更需要一个不容易出错和重构不利的解决方案(即通过类型安全的IoC容器或良好的IDE支持)。


查看完整回答
反对 回复 2019-07-06
  • 3 回答
  • 0 关注
  • 630 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信