C# 包装静态类型的问题

C# 包装静态类型的问题,c#,unit-testing,mocking,C#,Unit Testing,Mocking,目前我正在开发一个应用程序,它使用第三方静态类型和许多静态方法 例如 出于测试目的(为了提供创建动态模拟的可能性),我使用实例方法将此静态类型包装为非静态类型 public class WrappedA : InterfaceForTesingNeeds { public void WrappedM() { A.M(); } } public interface InterfaceForTesingNeeds { void WrappedM(); } 现在我面

目前我正在开发一个应用程序,它使用第三方静态类型和许多静态方法

例如

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

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

public interface InterfaceForTesingNeeds {
    void WrappedM();
}

现在我面临的问题是
A
中的大量方法太重要,无法手动包装这些方法。有人能提供一些方法吗?我如何将静态类型的“自动包装”转换为非静态类型

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

但是,您也可以使用Microsoft Fakes,它不需要更改您的应用程序。VisualStudio附带了赝品,因此您不需要下载或安装任何东西

有关详细信息,请参阅

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


使用假货意味着你不必花时间编写和维护无用的包装代码,你的计算机也不必花时间执行它。编写这些包装器类的最快方法是什么?不写它们

为什么要包装这些方法?正如你所说,这是一个没有效益的巨大成本。用假货就行了。另见
public class WrappedA : InterfaceForTesingNeeds {
    public void WrappedM() {
    A.M();
    }
}

public interface InterfaceForTesingNeeds {
    void WrappedM();
}