使用PrivateObject多參量我有一個類ClassA
私人方法DoSomething
這樣單元測試私有方法的C#
private bool DoSomething(string id, string name, string location
, DataSet ds, int max, ref int counter)
的參數是不同類型的,最後一個參數是ref參數。
我想單元測試這個方法,我知道我可以使用PrivateObject來這樣做。但我不確定如何正確調用此方法。
我想這
DataSet ds = new DataSet("DummyTable");
PrivateObject po = new PrivateObject(typeof(ClassA));
string id = "abcd";
string name = "Fiat";
string location = "dealer";
bool sent = (bool) po.Invoke(
"DoSomething"
, new Type[] { typeof(string), typeof(string), typeof(string)
, typeof(DataSet), typeof(int), typeof(int) }
, new Object[] { id, name, location, ds, 500, 120 });
,但我得到這個錯誤
System.ArgumentException: 規定(DoSomething的)成員找不到。您可能需要重新生成您的私人訪問者, 或者該成員可能是私有的,並且在基類中定義。如果後者爲真,則需要將定義成員的類型 傳遞給PrivateObject的構造函數。
我想我做的都是正確的,但很明顯,我不是。
更新和解決方案
想通了。從調用呼叫中刪除類型[]可修復它:
bool sent = (bool) po.Invoke(
"DoSomething"
//, new Type[] { typeof(string), typeof(string), typeof(string)
// , typeof(DataSet), typeof(int), typeof(int) } // comment this
, new Object[] { id, name, location, ds, 500, 120 });
想象出來,請參閱原始帖子中的更新和解決方案 – pixel
如果您有解決方案,最好發佈一個答案並將其作爲正確答案進行檢查,而不是在您的問題中嵌入答案。 –