我看起來basicly這樣的結構:因爲我需要做複雜單位的PrivateObject不找物業
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類訪問的方法和類A的性質來實例化類AStub。這工作了一段時間,並由於某種原因現在崩潰,每當我嘗試訪問屬性或方法。測試
下面的代碼:
var sut = new CommonIodAdapterImpl();
var accessor = new PrivateObject(sut);
accessor.SetProperty("Identificator", "blablub");
accessor.Invoke("DoSomething", null);
// assert...
它引發的異常是MissingMethodException告訴我,propertie或方法沒有被發現。但是,當我調試和檢查層次似乎是正確的拼寫。
謝謝你的幫助。
假設我們假設'AStub`不是從`A`繼承的事實是這個問題代碼示例中的拼寫錯誤,它應該真的是`public class AStub:A`? – 2011-02-03 08:51:28