Представьте только то, что нужно для ваших предполагаемых клиентов и сценариев использования и ничего более. Я бы не стал рассматривать модульное тестирование в качестве клиента и вносить изменения, чтобы код, не предназначенный для публичного использования с самого начала, был общедоступным только для модульного тестирования. Если вы это сделаете, вы будете загромождать свой API, уменьшать удобство использования вашего API и делать будущие изменения более сложными и не идеальными, поскольку теперь может существовать клиентский код, который использует то, что должно быть закрытым API.
Я бы проверил, есть ли у вас лучшие альтернативы. Например, вы можете создать частные средства доступа в Visual Studio 2005 и 2008, которые делают непубличный API-интерфейс класса общедоступным для целей тестирования. Это может загромождать ваш код модульного тестирования, но для меня самое главное - ваш дизайн и API, которые вы предоставляете своим клиентам, включая вас и вашу команду.
В другой заметке я бы также упомянул, что модульное тестирование дает вам прекрасную возможность увидеть, насколько хорош ваш дизайн и насколько легко использовать ваш API с точки зрения клиента. Вооружившись разочарованием, проблемами и т. Д. Во время разработки модульных тестов, вы вносите изменения, улучшающие ваши API и дизайн, чтобы они были более простыми, красивыми и удобными в использовании.