我正试图为一个受保护的方法编写一个包装类,我希望对该方法进行单元测试。在我的例子中,问题是原始方法被声明为protected static new
,这使我无法访问基方法,因为它是静态的。
有没有其他方法可以编写这个包装器方法?如果没有,在不改变其范围的情况下,我还需要其他哪些选项来对该方法进行单元测试?
编辑:添加代码:
public class DerivedClassToTest : BaseClass
{
protected static new Type_A MehodeToTest()
{
Type_A A = new Type_A
{
//DoSomething...
};
return A;
}
}
如何测试MehodeToTest?
我试图从我的Unitest中的DerivedClassToTest派生,这样我就可以访问受保护的方法,但它是静态的,所以我不能调用base.MethodToTest我如何访问MethodToTest
谢谢。
您可以在单元测试项目中编写一个包装器来公开方法:
public class DerivedClassToTestWrapper : DerivedClassToTest
{
public static Type_A MehodeToTestWrapped()
{
return DerivedClassToTest.MehodeToTest();
}
}
然后在单元测试中:
var actual = DerivedClassToTestWrapper.MehodeToTestWrapped();
此外,我不太确定在成员上使用protected static new
的设计目标是什么,但我必须承认,到目前为止,我从未在成员上见过这样的访问修饰符。
您的方法很好,但是base
限定符仅适用于实例方法。你可以像访问任何其他静态方法一样访问静态测试方法:
public class HelperClassToAccessMethodeToTest : DerivedClassToTest
{
public static Type_A MehodeToTestWrapped()
{
return DerivedClassToTest.MehodeToTest();
}
}
FWIW,我认为您正在遵循正确的路径来"解锁"传统代码,以这种方式进行测试。