对象图以获得更好的可测试性

时间:2016-04-06 15:57:39

标签: c# .net unit-testing visual-studio-2015 nunit

我是否应该根据测试代码重构我的系统,以接受对象图而不是每个依赖的对象?

因为我没有开始考虑单元测试的解决方案,所以我正在重构可测试性。

我通过构造函数注入了所有依赖项:

var myApp = new MyClass(DependencyOne, DependencyTwo, ...DependencyTen)

在构造函数中,我正在初始化我对这些依赖项的私有性:

MyClass
{
  MyClass(IDependencyOne, IDependencyTwo, ...IDependencyTen)
  {
    dependencyOne = IDependencyOne;
    dependencyTwo = dependencyTwo ;
    ...
    dependencyTen = IDependencyTen;

  }
}

对于我的单元测试,我现在可以模拟每个依赖项:

var mockDep1 = new Mock<IDependencyOne>();
var mockDep2 = new Mock<IDependencyTwo>();
...
var sut = new MyClass(mockDep1.Object, mockDep2.Object..)

构建代码的最佳标准方法是什么,它接受大量依赖项才能测试?

1 个答案:

答案 0 :(得分:1)

我认为,有几种方法可以解决测试中的依赖关系。

我建议使用automocking containers例如structure map 它非常干净,无需更新测试类即可轻松添加依赖项。

此外,您可以避免使用IoC并手动解决所有依赖项或使用testable pattern