Testing a private field using MSTest

c#, mstest

Solution

The way to get private fields or methods in general is to use Reflection. However, the unit test framework includes a helper class, `PrivateObject`, to make this easier. See the docs. In general, when I've used this, I've ended up making an extension methods like the following:

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

If you need to get private fields in a static class, however, you will need to go with straight up reflection.

Problem

Is it possible to get access to a private field in a unit test?

Original source

Related problems