这是将String[]
转换为String
的方法。
private string ConvertStringArrayToString(System.String[] array)
{
string result = string.Join("<br />", array);
return result.ToString();
}
这是上述方法的单元测试用例方法。
[TestMethod]
public void ConvertStringArrayToString_shouldReturnString()
{
string returnedString = null;
PrivateObject o = new PrivateObject(typeof(DemoClass));
System.String[] array = new System.String[]
{
"Index0","Index0","Index0","Index0"
};
returnedString = (string)Convert.ChangeType((o.Invoke("ConvertStringArrayToString", array)), typeof(string));
}
这将导致缺少方法异常。
我发现错误在于传递参数,即string[]
但是当我将方法访问说明符替换为public
时,测试用例就可以正常工作了!
请帮助说明为什么方法在private
和string[]
时无法访问。
答案 0 :(得分:2)
我认为问题在于,array
是作为object[]
参数的参数直接传递的,而您确实希望将其包装起来,因此它只是参数数组中的第一个参数。所以我会这样写:
string[] array = { "Index0", "Index0", "Index0", "Index0" };
object[] args = { array };
var result = o.Invoke("ConvertStringArrayToString", args);
string returnedString = (string) result;
(无需提前声明returnedString
,也不需要使用Convert.ChangeType
-强制转换就可以了。)