使代码单元可测试的最佳方法

时间:2014-02-10 06:27:24

标签: unit-testing mvvm dependency-injection

我正在使用MVVM架构并在我的应用程序中使用prism。以下是我用来设置IresourceManager的代码。请告诉我这种做法是否合适,或者是否应该使用依赖注入,并且每次在构造函数中作为参数传递Resourcemanager。

public SapUploadScriptInfo(XDocument scriptDoc) : this()
{
    this.resourceManager = ServiceLocator.Current.GetInstance<IResourceManagerService>();
    this.scriptDoc = scriptDoc;
    this.CreateFromXml(scriptDoc);
}

现在为了对类进行单元测试,这是最好的方法1.保持原样并在其他地方(再次使用它)对该方法进行单元测试.2。使用DI方法。

1 个答案:

答案 0 :(得分:2)

  

现在为了对班级进行单元测试,这是最好的方法   1.保持原样并在其他地方(再次使用它)对该方法进行单元测试&gt; 2.使用DI方法。

如果你试图在别处测试这个方法(作为另一个函数的一部分然后调用它),那么有几个问题:

  • 首先,你不再进行单元测试了。如果你正在测试函数调用的结果,那么你无意中也会测试你的IResourcemanager类
  • 其次,测试用例管理将成为一个问题。因此,您希望清楚每个函数的测试位置。但是现在你遇到了一个案例,你的测试实际上正处于碰巧使用这个函数的其他类中。

因此我建议采用依赖注入方法。它立即变得很清楚你正在尝试做什么,如果你必须在运行测试套件时传递它的实例,那么模拟IResourcemanager会更容易。