包装静态类型的问题

时间:2014-10-12 09:58:55

标签: c# unit-testing mocking

目前我正在开发使用具有大量静态方法的第三方静态类型的应用程序。

E.g。

public static class A {
    public static void M() {
   //some actions
   }
}

出于测试目的(提供创建动态模拟的可能性)我将此静态类型包装为具有实例方法的非静态类型。

public class WrappedA : InterfaceForTesingNeeds {
    public void WrappedM() {
    A.M();
    }
}

public interface InterfaceForTesingNeeds {
    void WrappedM();
}

现在我遇到的问题是A中的一些方法对于执行每种方法的手动包装来说太重要了。任何人都可以通过某种方式提供一些方法,例如"自动包装"静态类型变成非静态?

1 个答案:

答案 0 :(得分:1)

大多数模拟框架都要求您更改解决方案的体系结构,创建和实现接口,以及动态加载实现。

但是,您也可以使用Microsoft Fakes,它不需要更改您的应用程序。 Visual Studio带有假货,因此您无需下载或安装任何内容。

有关详细信息,请参阅http://msdn.microsoft.com/en-us/library/hh549175.aspx

  

Microsoft Fakes通过使用存根或填充程序替换应用程序的其他部分来帮助您隔离正在测试的代码。这些是受测试控制的小段代码。

使用Fakes意味着您不必花时间编写和维护无用的包装代码,并且您的计算机不必花时间执行它。编写这些包装类的禁用方法是什么?不写它们!