内部静态类包含私有类.如何创建私有类对象的单元测试使用微软假

本文关键字:单元测试 对象 微软 创建 包含私 静态类 何创建 内部 | 更新日期: 2023-09-27 18:08:47

我搜索了很多关于这个问题,但没有得到任何问题一样,我正在寻找,最后问这个问题。

我正在使用microsoft fakes测试下面的c#代码。

我被困在一种情况下,我有一个下面的类来测试

 internal static class IntStaticClass
 {
     //some code
    private class PvtClass
    {
        public string Create(Obj1 o1, Obj2 o2)
        {
        //some code
        }
    }
}

现在我要测试create方法

然而PrivateObject或PrivateType无法找到typeof(MyPrivateClass)

请帮助我如何创建PvtClass的对象并调用create方法进行测试。

内部静态类包含私有类.如何创建私有类对象的单元测试使用微软假

您可以通过Assembly.GetType()方法获得对外部类的引用,并且从那里可以通过Type.GetNestedTypes(BindingFlags.NonPublic)访问内部类

获得程序集引用的最简单的方法是typeof(该程序集中的某个公共类).Assembly

非常感谢Joshua。终于解决了问题。欢呼。

我写了下面的代码来创建内部私有类&执行它的方法

            var type = typeof(IntStaticClass);
            var types = type.GetNestedTypes(BindingFlags.NonPublic);
            MethodInfo methodInfo = types[0].GetMethod("Create");
            object classInstance = System.Activator.CreateInstance(types[0], null);
            object[] parametersArray = new object[2] { new Obj1(), new Obj2() };
            var result = methodInfo.Invoke(classInstance, parametersArray);

现在可以测试该方法了。欢呼。