单元测试用例 - MissingMethodException
Unit test Case - MissingMethodException
这是将 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[]
时无法访问。
我认为问题是 array
被直接作为 object[]
参数的参数传递,而你真的希望它被包装所以它只是数组中的第一个参数争论。所以我会这样写:
string[] array = { "Index0", "Index0", "Index0", "Index0" };
object[] args = { array };
var result = o.Invoke("ConvertStringArrayToString", args);
string returnedString = (string) result;
(不需要提前声明 returnedString
,也不需要使用 Convert.ChangeType
- 转换应该没问题。)
这是将 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[]
时无法访问。
我认为问题是 array
被直接作为 object[]
参数的参数传递,而你真的希望它被包装所以它只是数组中的第一个参数争论。所以我会这样写:
string[] array = { "Index0", "Index0", "Index0", "Index0" };
object[] args = { array };
var result = o.Invoke("ConvertStringArrayToString", args);
string returnedString = (string) result;
(不需要提前声明 returnedString
,也不需要使用 Convert.ChangeType
- 转换应该没问题。)