Aunque su descripción del problema no proporciona una visión exhaustiva de la base de código, creo que puedo decir con seguridad que su problema es doble.
Aprende a escribir las pruebas correctas.
Dices que tienes casi mil pruebas y tienes 120 proyectos. Suponiendo que como máximo la mitad de esos proyectos son proyectos de prueba, tiene 1000 pruebas para 60 proyectos de código de producción. Eso te da alrededor de 16-17 pruebas pr. ¡¡¡proyecto!!!
Esa es probablemente la cantidad de pruebas que tendría que cubrir alrededor de 1-2 clases en un sistema de producción. Entonces, a menos que solo tenga 1-2 clases en cada proyecto (en cuyo caso la estructura de su proyecto es demasiado fina) sus pruebas son demasiado grandes, cubren demasiado terreno. Dices que este es el primer proyecto que estás haciendo TDD correctamente. A decir, los números que presenta indican que este no es el caso, no está haciendo propiedad de TDD.
Debe aprender a escribir las pruebas correctas, lo que probablemente significa que necesita aprender a hacer que el código sea comprobable en primer lugar. Si no puede encontrar la experiencia dentro del equipo para hacer eso, sugeriría contratar ayuda desde el exterior, por ejemplo, en forma de uno o dos consultores que ayuden a su equipo durante un período de 2-3 meses a aprender a escribir código comprobable, y pequeños Pruebas unitarias mínimas.
Como comparación, en el proyecto .NET en el que estoy trabajando actualmente, podemos ejecutar aproximadamente 500 pruebas unitarias en menos de 10 segundos (y eso ni siquiera se midió en una máquina de alta especificación). Si esas fueran sus cifras, no tendría miedo de ejecutarlas localmente de vez en cuando.
Aprenda a gestionar la estructura del proyecto.
Ha dividido la solución en 120 proyectos. Según mis estándares, es una cantidad asombrosa de proyectos.
Entonces, si tiene sentido tener esa cantidad de proyectos (lo cual tengo la sensación de que no tiene, pero su pregunta no proporciona suficiente información para hacer un juicio calificado de esto), debe dividir los proyectos en componentes más pequeños que se puede construir, versionar e implementar por separado. Entonces, cuando un desarrollador ejecuta la unidad del conjunto de pruebas, solo necesita ejecutar las pruebas relacionadas con el componente en el que está trabajando actualmente. El servidor de compilación debe asegurarse de verificar que todo se integre correctamente.
Pero dividir un proyecto en múltiples componentes compilados, versionados e implementados por separado requiere, en mi experiencia, un equipo de desarrollo muy maduro, un equipo que es más maduro de lo que tengo la sensación de que su equipo es.
Pero, en cualquier caso, debe hacer algo con respecto a la estructura del proyecto. Divida los proyectos en componentes separados o comience a fusionar proyectos.
Pregúntese si realmente necesita 120 proyectos?
ps Es posible que desee comprobar NCrunch. Es un complemento de Visual Studio que ejecuta su prueba automáticamente en segundo plano.