2011-08-18 13 views
6

En mi lugar de trabajo, tenemos una solución de C# .net que contiene aproximadamente 50 proyectos y aproximadamente 2000 pruebas unitarias. Después de cambiar el código, es necesario que ejecutemos todas las pruebas en la solución antes de enviar nuestros cambios al servidor de compilación. Ejecutar todas las pruebas puede llevar entre 10 y 15 minutos. Estaba pensando - hey, tal vez podría haber algún proceso que analice todos los cambios de código que hice, y luego decida ejecutar solo los métodos de prueba relevantes. Si tal tipo de análisis es posible, entonces en lugar de ejecutar 2000 pruebas, la computadora solo ejecutará 15 o 100 pruebas, entonces estamos hablando de un muy buen aumento en la productividad y menos dolores de cabeza. ¿Alguien tiene alguna idea sobre cómo implementar esto o si dicho software está disponible?Prueba de unidad de dependencia de código

Respuesta

2

Nuestra C# Test Coverage Tool puede hacer esto.

  1. incrementalmente instrumentos sólo los archivos que han cambiado desde la última ejecución cobertura de la prueba.

  2. Se puede utilizar para rastrear la cobertura de prueba para cada prueba de unidad y qué archivos están involucrados. Cuando un archivo cambia, lo compara con la versión anterior; si un método involucrado en algunas pruebas unitarias cambia previamente, identifica esas pruebas unitarias. Tiene que organizar ese proceso para asociar las ejecuciones de prueba con los datos de cobertura, y volver a ejecutar las pruebas unitarias identificadas, pero tiene una pequeña cuestión de scripting. La razón para esto es permitir que la herramienta de cobertura de prueba funcione con marcos de prueba arbitrarios.

Puede hacerlo en el servidor de compilación para ahorrar tiempo. Lo que es más importante, puede proporcionarle a cada desarrollador esto, para que pueda ejecutar solo las pruebas necesarias para validar el código que cambia, antes de que él compruebe los cambios.

5

Es realmente difícil determinar qué depende de qué en un entorno de proyectos múltiples. Lo ideal sería:

  • pruebas unitarias serían verdadera unidad pruebas, y 2.000 de ellos debería funcionar en tal vez 20 segundos.
  • Sus pruebas de más larga duración se instalarán en una compilación continua en su servidor de compilación, por lo que aún recibiría una notificación bastante rápida de que se equivocó si se saltara algo, pero personalmente podría permitirse ser solo más selectivo al ejecutar solo las pruebas que cree que podría haber afectado con los cambios de código antes de comprometerse.
+5

+1 para separar las pruebas unitarias de las pruebas de integración. Ver http://stackoverflow.com/questions/61400/what-makes-a-good-unit-test – TrueWill

2

Visual Studio 2010 Premium y Ultimate tienen una herramienta de "Prueba de impacto" que hace exactamente eso.

+0

Interesante si es capaz de recoger pruebas NUnit y no solo MSTests – sll

+0

+1 @DBM: Lo bueno nunca se sabe antes , http://blogs.msdn.com/b/phuene/archive/2009/12/07/test-impact-analysis-in-visual-studio-2010.aspx – sll

+0

@sllev está limitado solo a las pruebas MSTest. – ckittel

0

En nuestro medio ambiente utilizamos NCrunch http://www.ncrunch.net/

Construye los proyectos y se ejecutan las pruebas de unidad en el fondo utilizando varios subprocesos. Le notifica las pruebas unitarias fallidas de una manera agradable.

NCrunch hace más o menos lo que necesita. Echar un vistazo.

Cuestiones relacionadas