我的结构基本上如下所示:
abstract class A
{
protected string Identificator { get; set; }
private void DoSomething()
{
// ...
DoSomethingSpecific();
}
protected abstract void DoSomethingSpecific();
}
由于复杂性,我需要对 DoSomething 方法进行单元测试,以确保它始终以相同的方式工作。这就是我创建以下存根的原因。
public class AStub : A
{
protected override void DoSomethingSpecific()
{
// nothing to do
}
}
我使用 PrivateObject 类来实例化类 AStub 来访问类 A 的方法和属性。这工作了一段时间,由于某种原因,现在每当我尝试访问该属性或方法时就会崩溃。
以下代码用于测试:
var sut = new CommonIodAdapterImpl();
var accessor = new PrivateObject(sut);
accessor.SetProperty("Identificator", "blablub");
accessor.Invoke("DoSomething", null);
// assert...
抛出的异常是 MissingMethodException ,告诉我找不到属性或方法。但是当我调试和检查层次结构时,一切似乎都是正确的,包括拼写。
感谢您的帮助。
您需要将 PrivateType 参数设置为基类才能访问该级别的私有成员。
var accessor = new PrivateObject(sut, new PrivateType(typeof(A)));
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)