2012-01-24 28 views
5

Necesito agregar pruebas unitarias para una solución existente con muchos proyectos. Construir el proyecto lleva mucho tiempo, así que decidí crear otra solución separada para los proyectos de prueba de la unidad. No sé qué es mejor: hacer referencia a dll o incluir en las pruebas de unidades soluciones de proyectos existentes que quiero probar.Organización de un proyecto de prueba unitaria para soluciones grandes

¿Cómo debo organizar mis casos de prueba y por qué? Por favor, base las respuestas en tus propias experiencias directas.

Respuesta

4

Sugiero que incluya el proyecto que desea probar en la solución y haga referencia a ese proyecto.
En un gran proyecto hice referencia solo a los archivos DLL y tuve muchos problemas con las pruebas unitarias probando versiones anteriores de los archivos DLL, porque la construcción del proyecto de prueba unitaria no desencadenó automáticamente una compilación del proyecto que prueba.

+0

Gracias por la respuesta que he entendido en la solución con el proyecto de prueba de unidad que debería incluir el proyecto desde otra solución wich Quiero probar que es correcto? – Serghei

+1

Sí. También significaría incluir todos los proyectos a los que hace referencia el proyecto que desea probar, etc. –

2

Como dijo Daniel, referirme a los proyectos sería mi enfoque preferido.

Si quiere mejorar el tiempo que lleva hacer una construcción local, considere usar la extensión Solution Load Manager para controlar qué proyectos están cargados y cuáles no. Realmente puede ayudar a mejorar los tiempos de construcción cuando solo está trabajando en un subconjunto de una solución muy grande.

+0

Muchas gracias por Solution Load Manager. – Serghei

3

Serghei, como Daniel Hilgarth señala que es aconsejable incluir los proyectos de prueba de la unidad en su solución principal. Además, es aconsejable tener una relación 1: 1 entre sus proyectos de desarrollo y los proyectos de prueba de la unidad.

Dicho esto, algo importante a tener en cuenta es que la cantidad de proyectos en una solución aumenta el tiempo de compilación de forma no lineal.

¡Un proyecto en el que he trabajado recientemente tenía 97 proyectos en una solución! El tiempo de construcción fue de más de 10 minutos. Al consolidar el código en menos proyectos, el tiempo de construcción se redujo a 2 minutos para el mismo LOC.

La pérdida de productividad del desarrollador a costa de la "corrección" puede ser muy costosa a largo plazo. No solo se pierde el tiempo de construcción, sino también el tiempo perdido debido a una interrupción en la concentración, la molestia en nombre del desarrollador, etc. ... ¿Cuántas veces ha sido detenido por una compilación lenta/computadora/IDE y terminó navegando por la web, perdiendo 10 minutos antes de que te des cuenta "¡Oh, las construcciones terminaron!". He estado en una situación como esta tan mal que el tiempo que pasé entre compilaciones se gastó en sitios web de trabajo de navegación ;-)

Como solución alternativa en soluciones grandes lo he hecho.

  • Crear una solución para dev ligera (sólo proyectos dev)
  • crear otra para los proyectos de las mismas, además de las pruebas de unidad dev.
  • Mantenga abiertas las dos instancias de Visual Studio durante el desarrollo. De esta forma obtengo un ciclo de compilación/ejecución/depuración corto para el desarrollo, pero puedo verificar el estado de las pruebas (compilación, ejecución) en cualquier momento.
  • Cuando llegue el momento de registrarme, me aseguraré de que las compilaciones del proyecto de prueba dev + unit, las pruebas pasen y yo realice el check-in.

Esto introduce la posibilidad de que las pruebas de su unidad no se construyan ya que su código de desarrollo difiere del código que las pruebas de la unidad esperan, sin embargo es un equilibrio. Se debe realizar una compensación para garantizar la mayor productividad, ya sea mediante el desarrollo puro o la fijación de pruebas rotas en todo momento.La productividad puede ser erosionado no sólo a través de la acumulación lenta e IDE, sino también mediante la fijación de esas pruebas rotas, así que hay que asegurarse de que no gire demasiado lejos cuando este equilibrio.

Un último punto a hacer es la siguiente. ¿Ha considerado configurar un archivo de proceso por lotes de la consola para realizar la construcción de la ciudad del equipo en PC de desarrollo local? Esto se puede realizar como último paso antes del check-in para garantizar que los desarrolladores estén revisando el código que se crea y pasa de acuerdo con la configuración de TC.

Saludos,

Cuestiones relacionadas