Я бы сказал, что возможность тестировать частные методы - это «мошенничество», поскольку оно может стимулировать наращивание нового кода в существующем классе. Если частная логика настолько сложна, что ей нужны специальные тесты (помимо общедоступных), тогда есть большая ценность в том, чтобы извлечь эту логику в виде отдельного класса с публично тестируемым интерфейсом. Что касается пограничных случаев, я осторожно согласен с подходом Джона, заключающимся в использовании внутренних методов (просто будьте осторожны с тем, как сильно они раскрываются.)
Тем не менее, я иногда специально делал класс распечатанным, чтобы я мог писать тесты, использующие вызовы виртуальных методов для определения эффектов, что слабо связано с подходом частичного класса. Это всегда кажется мне немного грязным, и мне иногда хотелось, чтобы был способ пометить класс как «внутренний незапечатанный».