Я согласен с утверждением Эрика о том, что модульные тесты не должны влиять на API классов.
В вашей ситуации кажется, что ваш дизайн может быть не совсем правильным. Вы говорите о модульных тестах, которые должны проверять частные переменные, но модульный тест должен быть полностью определен с использованием общедоступных API.
Либо разделите ваши объекты так, чтобы частные поля были открыты на каком-то слое (делая объекты более детализированными), либо измените ваши тесты, чтобы не нуждаться в доступе к этим закрытым полям (делая ваши юнит-тесты более грубыми) .
Одним из полезных инструментов является Кодовые контракты. Вы можете определять очень мелкозернистые тесты (постусловия и объектные инварианты, определенные в терминах частных полей), используя кодовые контракты, и сделать ваше модульное тестирование немного более крупнозернистый. Некоторые из моих модульных тестов делают только вызов метода и гарантируют, что кодовые контракты не сработают.