Хотя ваше описание проблемы не дает полного понимания кодовой базы, я думаю, что могу с уверенностью сказать, что ваша проблема двоякая.
Учитесь писать правильные тесты.
Вы говорите, что у вас есть почти тысяча тестов, и у вас есть 120 проектов. Предполагая, что не более половины из этих проектов являются тестовыми проектами, у вас есть 1000 тестов для 60 проектов с производственным кодом. Это дает вам около 16-17 тестов пр. проект !!!
Это, вероятно, количество тестов, которое мне нужно было бы охватить примерно 1-2 классами в производственной системе. Таким образом, если у вас нет только 1-2 классов в каждом проекте (в этом случае структура вашего проекта слишком мелкозернистая), ваши тесты слишком велики, они охватывают слишком много места. Вы говорите, что это первый проект, который вы делаете TDD правильно. Например, цифры, которые вы указываете, указывают на то, что это не так, вы не используете свойство TDD.
Вам нужно научиться писать правильные тесты, что, вероятно, означает, что вам нужно научиться в первую очередь тестировать код. Если вы не можете найти в команде опыт для этого, я бы предложил нанять помощь извне, например, в виде одного или двух консультантов, помогающих вашей команде в течение 2-3 месяцев научиться писать тестируемый код, и небольших минимальные юнит-тесты.
Для сравнения, над проектом .NET, над которым я сейчас работаю, мы можем выполнить примерно около 500 модульных тестов менее чем за 10 секунд (а это даже не было измерено на машине с высокими техническими характеристиками). Если бы это были ваши цифры, вы бы не боялись запускать их локально.
Научитесь управлять структурой проекта.
Вы разделили решение на 120 проектов. Это по моим меркам ошеломляющее количество проектов.
Так что, если есть смысл иметь такое количество проектов (что, как мне кажется, не так, но ваш вопрос не дает достаточно информации, чтобы квалифицированно оценить это), вам нужно разделить проекты на более мелкие компоненты, которые может быть собран, версионирован и развернут отдельно. Поэтому, когда разработчик запускает модуль набора тестов, ему / ей нужно только запустить тесты, относящиеся к компоненту, над которым он / она работает в настоящее время. Сервер сборки должен позаботиться о том, чтобы все правильно интегрировалось.
Но разделение проекта на несколько компонентов, сборку, управление версиями и развертывание которых по отдельности, требует, по моему опыту, очень зрелой команды разработчиков, команды, которая более зрелая, чем я, чувствую, что ваша команда такова.
Но, во всяком случае, вам нужно что-то сделать со структурой проекта. Либо разделите проекты на отдельные компоненты, либо начните объединять проекты.
Спросите себя, действительно ли вам нужно 120 проектов?
PS Вы можете проверить NCrunch. Это плагин Visual Studio, который автоматически запускает тест в фоновом режиме.