我正在为包含私有嵌套类的C#应用程序编写单元测试。该类反过来定义了一个静态异步方法,我想测试:
public class FooClass {
private static class BarClass {
public static async Task<string> BazMethod() { }
}
}
现在看来我应该能够在我的测试方法中执行以下操作:
var barClass = new PrivateType(typeof(FooClass).GetNestedType("BarClass", BindingFlags.NonPublic);
var ret = await (Task<string>)barClass.InvokeStatic("BazMethod");
当我运行它时,barClass已成功初始化,并且在调试器中我可以看到它的DeclaredMethods包括{System.Threading.Tasks.Task'1[System.String] BazMethod()}
。但是对InvokeStatic的调用因MissingMethodException而失败:Method Project.FooClass+BarClass.BazMethod not found.
也许是因为BazMethod是异步的,它的真实名称用于反射目的,我需要将这个装饰包含在传递给InvokeStatic调用的名称中吗?