如何在 .NET Standard 测试项目中测试 PrivateObject?

4
2个回答

2
你总是可以使用反思。
ClassToTest obj = new ClassToTest();
Type t = typeof(ClassToTest);

FieldInfo f = t.GetField("field",  BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public);
f.SetValue(obj, "Don't panic");

t.InvokeMember("PrintField",
    BindingFlags.InvokeMethod | BindingFlags.NonPublic |
    BindingFlags.Public | BindingFlags.Instance,
    null, obj, null);

你应该为此编写一个帮助类,否则你的测试将包含很多相同的代码。
附:代码示例来自这里

-1

私有对象仅在类的内部可访问,因此为了测试它们,您必须执行以下操作之一:

  1. 将私有对象公开
  2. 或者
  3. 实现公共方法,这些方法将与这些私有对象交互

7
我认为他不是在问私有对象,而是在问 PrivateObject。您可以参考该链接:https://msdn.microsoft.com/zh-cn/library/microsoft.visualstudio.testtools.unittesting.privateobject.aspx - C.M.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接