C# 如何为在基本对象中调用基本方法的方法编写单元测试
我有以下代码:C# 如何为在基本对象中调用基本方法的方法编写单元测试,c#,unit-testing,mocking,C#,Unit Testing,Mocking,我有以下代码: class MyBase { public virtual void foo() { ... } } class MyDerived : MyBase { public override void foo() { ... base.foo(); ... } } 如果不执行base.foo()方法,我如何在MyDerivated类中测试方法foo?基本上你不能。单独测试基类方法,以便对此有信心,然后可以
class MyBase
{
public virtual void foo()
{ ... }
}
class MyDerived : MyBase
{
public override void foo()
{
...
base.foo();
...
}
}
如果不执行base.foo()方法,我如何在MyDerivated类中测试方法foo?基本上你不能。单独测试基类方法,以便对此有信心,然后可以根据基类行为测试派生类
(这是另一种情况,复合比继承提供更多的控制-如果您的派生类由基类组成,您可以使用mock或其他替代方法。当然,这并不总是合适的,但是…如何重构MyDerivated,使其具有doprefo()和DoPostFoo()方法。通过这种方式,可以重写foo来调用这些函数,并且可以将它们用于单元测试。不过这感觉有点难看。我觉得MyDervied需要聚合MyBase,而不是从中派生出来,如果功能需要单独测试的话。简短的回答是:你不能。因为你不能“模仿”这个依赖
也许TypeMock隔离器有一些神奇的配置文件API技巧可以在这里帮助您,但我不确定。如果您不需要在测试中执行基本方法,那么您的设计中有一些错误 为什么不执行基本方法呢?