2010-02-21 8 views
10

Tenemos un gran proyecto Delphi (1.5 millones de líneas de código) y estamos pasando a utilizar procesos ágiles.Obteniendo las estadísticas de Cobertura de prueba de DUnit usando FinalBuilder y AQTime

Ya tenemos un entorno de integración continua (FinalBuilder) que he actualizado para incluir pruebas unitarias (dUnit) y métricas de código (CodeHealer) en los correos electrónicos para todos en nuestro equipo de desarrollo. Nuestra cobertura de prueba unitaria no es excelente, así que ahora estoy tratando de obtener AQtime en la mezcla para algunos resultados de cobertura de prueba en cada compilación.

Estoy usando la tarea "Ejecutar programa" para ejecutar el ejecutable de la prueba unitaria, registrar los resultados y analizar el archivo posteriormente. Tengo la intención de utilizar la tarea "Ejecutar script" para ejecutar AQtime (a través de COM) y exportar los resultados a XML para que pueda analizar esos resultados.

El problema que tengo es que con AQtime ejecutando el ejecutable de prueba de la unidad, pierdo la capacidad de monitorear el ejecutable de prueba de la unidad directamente. Me gustaría que FinalBuilder analice los resultados de ambas tareas. ¿Alguien sabe cómo acceder a los resultados de dUnit cuando se llama desde AQtime?

Respuesta

7

Corrimos por el mismo camino, y nosotros no ejecutar la prueba de DUnit AQTime,

En lugar de eso, creamos y ejecutamos nuestras pruebas Dunit usando FinalBuilder.

Nuestras pruebas unitarias usan XmlTestRunner, entonces podemos saber si la prueba falla o no es muy fácil usando una consulta XPath en el archivo XML resultante.

Actualización: Una actualización reciente de FinalBuilder 7.0 ahora es compatible con DUnit. Es a través de su propio XMLTestrunner.pas, que está bajo el Directorio de FinalBuilder después de la instalación. Este corredor genera los resultados de la prueba en el mismo formato que NUnit. Luego se integra realmente bien en FinalBuilder Server.

+0

Gracias Robert. La versión de dUnit que estaba en nuestra compilación no tenía XMLTestRunner. Descargué dUnit 9.3 de sourceforge y agarré XMLTestRunner de la carpeta Contrib. Hace todo lo que quería que hiciera. – Catharz

+1

Catharz, debe aceptar una respuesta si ha sido respondida por usted. –

2

Usted está describiendo la configuración a la que estamos evolucionando lentamente.

  • pruebas DUnit se compilan como aplicaciones de consola utilizando el TTextTestListener se define en la unidad TextTestRunner.
  • El servidor de CI es un script cmd que crea todos los proyectos y ejecuta todas las pruebas.
  • La salida de las pruebas se canaliza a un archivo.

Una solución podría ser tener AQTime perfil estas aplicaciones de consola al mismo tiempo ser capaz de canalizar los resultados a un archivo que se puede analizar después ?!

Otra solución podría ser para implementar su propio objeto TestListener y tienen que escribir los objetos testresults al registro de eventos, directamente a un archivo de registro, una base de datos o en donde quieras y tener esta recogido por FinalBuilder.

En lugar de tener algo como esto en el archivo de proyecto

Application.Initialize; 
    if System.IsConsole then TextTestRunner.RunRegisteredTests 
    else GUITestRunner.RunRegisteredTests; 

se convertiría en algo como esto

Application.Initialize; 
    if System.IsConsole then OurEventLogTestRunner.RunRegisteredTests 
    else GUITestRunner.RunRegisteredTests; 
+0

Gracias por la respuesta Lieven. Traté de obtener AQtime para canalizar los resultados del ejecutable dUnit a un archivo, pero eso no funcionó. También eché un vistazo a la implementación de mi propio TestListener, que se veía bastante fácil. Pero después de ver XMLTestRunner desde dUnit 9.3, parecía aún más fácil. – Catharz

+0

Además, le sugiero que cambie su código a: TextTestRunner.RunRegisteredTests (rxbHaltOnFailures) para que obtenga un código de error <> 0 cuando falla alguna prueba. Excelente para la integración continua. – marius

+0

@marius: thx, no sabía eso. En este momento, hacemos una búsqueda grep en los resultados de la prueba para encontrar la cantidad de errores/fallas. –

Cuestiones relacionadas