我正在尝试对私有方法进行单元测试。 我在下面的question
中看到了以下示例Class target = new Class();
PrivateObject obj = new PrivateObject(target);
var retVal = obj.Invoke("PrivateMethod");
Assert.AreEqual(retVal);
我的私人方法有2个参考参数。 如何通过?
答案 0 :(得分:22)
如果传递参数数组,则将填充任何ref
参数:
bool p1 = true; // can be others values
bool p2 = false; // can be others values
object[] args = new object[2] { p1, p2 };
var retval = obj.Invoke("PrivateMethod", args);
p1 = (bool)args[0];
p2 = (bool)args[1];
答案 1 :(得分:2)
首先创建参数的对象数组。然后数组应该包含新的引用:
Class target = new Class();
PrivateObject obj = new PrivateObject(target);
object[] args = new object[] {arg1, arg2};
var retVal = obj.Invoke("PrivateMethodWithArgs", args);
Assert.AreEqual(retVal);
Debug.WriteLine(args[0]);
Debug.WriteLine(args[1]);
答案 2 :(得分:1)
试试这个:
object [] myarray=new object[]{param1,param2};
var retVal = obj.Invoke("PrivateMethod",ref myarray);