单元测试用例 - 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 时,测试用例没有错误!

请问为什么方法在privatestring[]时无法访问。

我认为问题是 array 被直接作为 object[] 参数的参数传递,而你真的希望它被包装所以它只是数组中的第一个参数争论。所以我会这样写:

string[] array = { "Index0", "Index0", "Index0", "Index0" };
object[] args = { array };
var result = o.Invoke("ConvertStringArrayToString", args);
string returnedString = (string) result;

(不需要提前声明 returnedString,也不需要使用 Convert.ChangeType - 转换应该没问题。)