据我所知,有两种方法,都有它们的缺点.
>从依赖注入系统获取您正在进行单元测试的对象.这是一种低维护,因为您在更改框架时无需管理任何内容.但是你实际上是从你的对象的角度测试整个系统,如果一个组件失败,它可能会爆炸很多单元测试,而且可能不明显哪个是失败的.
>是在单元测试中手动管理依赖项,在某些情况下创建测试对象,以便您可以单独测试每个对象.这使得单元测试保持谨慎但显着增加了单元测试本身的维护.这也意味着您不会因为对象在您的实时系统上的交互方式而接收到错误.
接近是对还是错?应该使用折衷方案吗?有没有人有任何成功的故事.
如果您正在编写单元测试,那么您应该使用模拟来实现依赖项,并且不应该使用IoC容器.您应该使用模拟实例化您的测试类,以便手动注入依赖项.
如果您从IoC容器中获取对象已经连线,那么您正在编写的是非常不同的集成测试.
编写单元测试的目标应该是将测试与系统的其他部分隔离开来.