单元测试和IoC Autofac-在单元测试中应使用模拟还是IoC

时间:2019-01-25 18:45:30

标签: unit-testing mocking moq autofac ioc-container

我在应用程序中使用Autofac IoC,但是我试图编写一些单元测试,并且为了实例化一些视图模型,我需要向它们提供一些依赖关系。

例如,我的Car类依赖于某个ISession对象,这些对象可以是我们自己的实现或第三方:

public class Car
{
  public Car(ISession session) {...}
}

在实际代码中,Autofac会通过在Autofac容器中注册ISessionCar并对其进行解析来解决这一问题。很好。

但是对于单元测试,使用Autofac并像在应用程序代码中一样注册并解决这些问题对我来说是错误的。

我对单元测试的理解是:

  1. 我认为,联合测试应该通过使用模拟而不是使用IoC来做到这一点。因此,应该模拟ISession并将其传递给被测汽车(sut)对象,而不是注册和解析ISession和Car。
  2. 单元测试完全不应使用IoC(例如Autofac或其他任何东西),而应使用模拟依赖项。这是为了隔离单元测试。如果使用IoC,我们将进行集成测试,而不是单元测试。
  3. 单元测试应由开发人员编写,集成测试应由testers / qa编写

这正确吗?

0 个答案:

没有答案
相关问题