内部静态类包含私有类.如何创建私有类对象的单元测试使用微软假
本文关键字:单元测试 对象 微软 创建 包含私 静态类 何创建 内部 | 更新日期: 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);
现在可以测试该方法了。欢呼。