我有一个类ClassA
,其私有方法DoSomething
就像这样
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的构造函数。
我认为我这样做是正确的,但显然,我不是。
更新和解决方案
想出来。从Invoke调用中删除Type []会修复它:
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 });
答案 0 :(得分:1)
删除类似belove的类型并改为使用Object。另请参阅上面的问题更新如何使用它
<asp:CheckBox ID="chkResOther" runat="server" onclick="RadioControl(this); otherFunction();" Text="Other" />