相当于私有方法的 TypeInfo.getMethod

时间:2021-04-16 09:09:39

标签: c#

我想测试私有方法。

<块引用>

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 类似的方法。

我也不知道如何测试静态类。

0 个答案:

没有答案
相关问题