如何在c#ex私有字符串FindColumn <t>中为私有泛型方法创建unittest

时间:2018-02-05 11:47:44

标签: c# .net api unit-testing

我有一个方法

private string FindColumn<T>(string sortColumn, string sortDirection = "asc")
{}

我的TestMethod

var result = _privateObject.Invoke("FindColumn<SelectListModel>", new object[] {sortColumn, sortDirection});

它无法正常工作。 有人可以帮我检查一下我的语法。

谢谢, Dam Tran

1 个答案:

答案 0 :(得分:1)

我想这里没有办法使用反射。

  1. 获取要测试的方法的MethodInfo对象。为此,您必须传递特殊绑定标志,因为反射API通常会忽略私有成员。
  2. 使用MakeGenericMethod方法实例化通用方法。在这里,您将通用类型参数作为Type对象传递给typeof()运算符
  3. 生成的MethodInfo对象有一个Invoke方法,您可以调用
  4. 但是,更好的解决方案通常是重新设计类的可测试性,以便您可以更轻松地访问这些方法:我不确定下一个人是否会理解您在测试中所做的事情,如果您不写良好的文档,为什么你需要测试私有方法。