如何在c#ex private string FindColumn中为私有泛型方法创建单元测试<;T>;

如何在c#ex private string FindColumn中为私有泛型方法创建单元测试<;T>;,c#,.net,api,unit-testing,C#,.net,Api,Unit Testing,我有办法 private string FindColumn<T>(string sortColumn, string sortDirection = "asc") {} 私有字符串FindColumn(字符串sortColumn,字符串sortDirection=“asc”) {} 我的测试方法 var result = _privateObject.Invoke("FindColumn<SelectListModel>", new object[] {sortCo

我有办法

private string FindColumn<T>(string sortColumn, string sortDirection = "asc")
{}
私有字符串FindColumn(字符串sortColumn,字符串sortDirection=“asc”)
{}
我的测试方法

var result = _privateObject.Invoke("FindColumn<SelectListModel>", new object[] {sortColumn, sortDirection});
var result=_privateObject.Invoke(“FindColumn”,新对象[]{sortColumn,sortDirection});
它不能工作。 有人能帮我检查一下语法吗

谢谢,
Dam Tran

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

  • 获取要测试的方法的
    MethodInfo
    对象。为此,必须传递特殊的绑定标志,因为反射API通常会忽略私有成员
  • 使用
    MakeGenericMethod
    方法实例化泛型方法。在这里,您可以通过
    typeof()
    操作符将泛型类型参数作为
    type
    对象传递
  • 生成的
    MethodInfo
    对象具有一个可以调用的
    Invoke
    方法

  • 然而,更好的解决方案通常是重新设计类以实现可测试性,这样您就可以更容易地访问这些方法:如果您没有编写好文档说明为什么需要测试私有方法,我不确定下一个家伙会理解您在测试中做了什么。

    我如何传递“”来调用方法?通常,避免测试私有成员。也就是说,您必须使用反射来获取成员,然后在尝试调用它之前为其提供泛型成员。