Сергей, как отмечает Даниэль Хилгарт, желательно включить проекты модульного тестирования в ваше основное решение. Кроме того, желательно иметь соотношение 1: 1 между вашими проектами разработки и проектами модульного тестирования.
При этом важно отметить, что количество проектов в решении увеличивает время сборки нелинейным образом.
Один проект, над которым я недавно работал, содержал 97 проектов! Время сборки составило более 10 минут. Благодаря объединению кода в меньшее количество проектов время компоновки было сокращено до 2 минут для одного и того же LOC.
Производительность разработчика, потерянная за счет «правильности», может быть очень дорогой в долгосрочной перспективе. Это не только потерянное время сборки, но и время, потерянное из-за перерыва в концентрации, раздражения со стороны разработчика и т. Д. Сколько раз вы лично были остановлены медленной сборкой / компьютером / IDE и оказались в конечном итоге просматривая веб-страницы, теряя 10 минут, прежде чем вы поймете: «О, сборки закончены!». Я был в такой ситуации настолько плохой, что время, проведенное между сборками, было потрачено на просмотр веб-сайтов вакансий; -)
В качестве обходного пути для больших решений я сделал это.
- Создание одного решения для облегченного разработчика (только для проектов dev)
- Создайте еще один для тех же dev-проектов плюс юнит-тесты.
- Держите оба экземпляра Visual Studio открытыми во время разработки. Таким образом, я получаю короткий цикл сборки / запуска / отладки для разработки, но могу проверить состояние тестов (компиляция, выполнение) в любое время.
- Когда приходит время регистрации, я гарантирую, что проект dev + unit test будет собран, тесты пройдены, и я зарегистрировался.
Это вводит вероятность того, что ваши модульные тесты не будут создаваться, поскольку ваш код разработки отличается от кода, который ожидают модульные тесты, однако это баланс. Необходимо найти компромисс, чтобы обеспечить максимальную производительность, будь то за счет чистой разработки или исправления ошибок в тестах. Производительность может быть снижена не только с помощью медленной сборки и IDE, но и путем исправления этих неработающих тестов, поэтому вы должны быть уверены, что не уклонитесь слишком далеко при балансировке.
И последнее замечание. Рассматривали ли вы создание командного файла консоли для сборки Team City на локальных компьютерах разработчиков? Это может быть выполнено как последний шаг перед регистрацией, чтобы гарантировать, что разработчики проверяют код, который строит и передает в соответствии с настройкой TC.
С уважением,