C# 单元测试用例-MissingMethodException

C# 单元测试用例-MissingMethodException,c#,unit-testing,vs-unit-testing-framework,C#,Unit Testing,Vs Unit Testing Framework,这是将String[]转换为String的方法 private string ConvertStringArrayToString(System.String[] array) { string result = string.Join("<br />", array); return result.ToString(); } 这将导致缺少方法异常 我发现错误在于传递参数,即string[] 但是,当我将方法访问说明符替换为public时,测试用例可以正常工作 请

这是将
String[]
转换为
String
的方法

private string ConvertStringArrayToString(System.String[] array)
{

    string result = string.Join("<br />", array);
    return result.ToString();
}
这将导致缺少方法异常

我发现错误在于传递参数,即
string[]

但是,当我将方法访问说明符替换为
public
时,测试用例可以正常工作


请帮助解释为什么当方法是
private
string[]
时无法访问它。我认为问题在于
array
直接作为
对象[]
参数的参数传递,而您确实希望它被包装,因此它只是参数数组中的第一个参数。所以我要写这个:

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

(不需要提前声明
returnedString
,也不需要使用
Convert.ChangeType
-强制转换就可以了。)

我认为问题在于
数组
直接作为
对象[]
参数的参数传递,而您确实希望它被包装,所以它只是一系列参数中的第一个参数。所以我要写这个:

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

(不需要在前面声明
returnedString
,也不需要使用
Convert.ChangeType
-强制转换就可以了。)

除了反射问题,为什么要测试私有方法?私有方法不应该进行单元测试。你不是通过类的公共接口来测试这个方法吗?除了反射问题,你为什么要测试一个私有方法?私有方法不应该进行单元测试。您不是通过类的公共接口测试该方法吗?