I agree with Eric's statement that unit tests should not affect class APIs.
In your situation, it sounds as if your design may not be entirely correct. You are talking about unit tests that should check for private variables, but unit test should be fully defined using public APIs.
Either separate your objects so that the private fields are exposed at some level (making the objects finer grained), or change your tests so as not to need access to these private fields (making your unit tests coarser).
One useful tool is Code Contracts. You can define very fine-grained tests (post-conditions and object invariants defined in terms of a private field) using code contracts and make your block larger. Some of my unit tests no more than call a method and ensure that code contracts do not work.
source share