C# 如何使用Microsoft单元测试框架使用输入参数对私有方法进行单元测试?
我试图重构C代码,并希望使用Microsoft单元测试来确保我不会破坏任何功能。Microsoft单元测试建议使用不带参数的公共方法,而代码使用带大量参数的私有方法。如何使用Microsoft单元测试框架对这些也有输入参数的私有方法进行单元测试?您无权访问的测试方法很可能需要您使用反射。它可能是一种脆弱的模式,但请参见以下获取私有方法并使用参数调用它的示例: 可能看起来像这样:C# 如何使用Microsoft单元测试框架使用输入参数对私有方法进行单元测试?,c#,unit-testing,C#,Unit Testing,我试图重构C代码,并希望使用Microsoft单元测试来确保我不会破坏任何功能。Microsoft单元测试建议使用不带参数的公共方法,而代码使用带大量参数的私有方法。如何使用Microsoft单元测试框架对这些也有输入参数的私有方法进行单元测试?您无权访问的测试方法很可能需要您使用反射。它可能是一种脆弱的模式,但请参见以下获取私有方法并使用参数调用它的示例: 可能看起来像这样: MethodInfo method = myObj.GetType().GetMethod(methodName);
MethodInfo method = myObj.GetType().GetMethod(methodName);
object result = method.Invoke(myObj, new object[] { param1, param2 });
return result;
我个人不喜欢使用反射来测试私有方法;我更喜欢针对使用这些私有方法的较大的公共方法。我不确定这是否有效,但您可以将其声明为分部类,然后使用单独的分部将您的私有成员包装为公共,以便在测试中使用。