我想测试私有方法。
<块引用>Unit testing private methods in C#
我尝试了第五种解决方案。即:使用反射
using System;
using System.Reflection;
namespace tobeDEleted
{
static class classA {
private static void method1() { Console.WriteLine(1); }
}
class classB
{
private void method2() { Console.WriteLine(2); }
private static void method3() { Console.WriteLine(3); }
}
class Program
{
static void Main(string[] args)
{
var objb = new classB();
MethodInfo methodInfo1 = typeof(classA).GetMethod ("method1", BindingFlags.NonPublic | BindingFlags.Instance);
MethodInfo methodInfo2 = typeof(classB).GetMethod("method2", BindingFlags.NonPublic | BindingFlags.Instance);
MethodInfo methodInfo3 = typeof(classB).GetMethod("method3", BindingFlags.NonPublic | BindingFlags.Instance);
object[] parameters = { };
methodInfo2.Invoke(obj, parameters);
methodInfo3.Invoke(obj, parameters);
}
}
}
正如所料,methodInfo3 抛出异常:
<块引用>System.NullReferenceException: '未将对象引用设置为对象的实例。'
对于静态方法,是否有与 GetMethod 类似的方法。
我也不知道如何测试静态类。