Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用Microsoft单元测试框架使用输入参数对私有方法进行单元测试?_C#_Unit Testing - Fatal编程技术网

C# 如何使用Microsoft单元测试框架使用输入参数对私有方法进行单元测试?

C# 如何使用Microsoft单元测试框架使用输入参数对私有方法进行单元测试?,c#,unit-testing,C#,Unit Testing,我试图重构C代码,并希望使用Microsoft单元测试来确保我不会破坏任何功能。Microsoft单元测试建议使用不带参数的公共方法,而代码使用带大量参数的私有方法。如何使用Microsoft单元测试框架对这些也有输入参数的私有方法进行单元测试?您无权访问的测试方法很可能需要您使用反射。它可能是一种脆弱的模式,但请参见以下获取私有方法并使用参数调用它的示例: 可能看起来像这样: MethodInfo method = myObj.GetType().GetMethod(methodName);

我试图重构C代码,并希望使用Microsoft单元测试来确保我不会破坏任何功能。Microsoft单元测试建议使用不带参数的公共方法,而代码使用带大量参数的私有方法。如何使用Microsoft单元测试框架对这些也有输入参数的私有方法进行单元测试?

您无权访问的测试方法很可能需要您使用反射。它可能是一种脆弱的模式,但请参见以下获取私有方法并使用参数调用它的示例:

可能看起来像这样:

MethodInfo method = myObj.GetType().GetMethod(methodName);
object result = method.Invoke(myObj, new object[] { param1, param2 });
return result;

我个人不喜欢使用反射来测试私有方法;我更喜欢针对使用这些私有方法的较大的公共方法。

我不确定这是否有效,但您可以将其声明为分部类,然后使用单独的分部将您的私有成员包装为公共,以便在测试中使用。