使用MSTest测试私有字段

Mic*_*lle 6 c# mstest

是否可以在单元测试中访问私有字段?

Mik*_*ray 10

获取私有字段或方法的方法通常是使用Reflection.但是,单元测试框架包含一个帮助程序类PrivateObject,以使这更容易.查看文档.一般来说,当我使用它时,我最终制作了如下扩展方法:

public static int GetPrivateField(this MyObject obj)
{
  PrivateObject po = new PrivateObject(obj);
  return (int)po.GetField("_privateIntField");
}
Run Code Online (Sandbox Code Playgroud)

但是,如果您需要在静态类中获取私有字段,则需要直接反映.

  • 您可以使用[`PrivateType`](http://msdn.microsoft.com/en-us/library/microsoft.visualstudio.testtools.unittesting.privatetype.aspx)对象在静态类中获取和设置私有字段(如反对PrivateObject类型!) (2认同)