【问题标题】:How to unit test private methods with input parameters using Microsoft Unit Testing Framework?如何使用 Microsoft 单元测试框架对带有输入参数的私有方法进行单元测试?
【发布时间】:2015-06-24 17:23:11
【问题描述】:

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

【问题讨论】:

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

标签: c# unit-testing


【解决方案1】:

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

可能看起来像这样:

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

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

【讨论】:

    猜你喜欢
    • 2010-09-20
    • 2022-11-30
    • 1970-01-01
    • 1970-01-01
    • 2014-08-10
    • 2018-08-01
    • 1970-01-01
    相关资源
    最近更新 更多