2010-02-21 4 views
10

Nous avons un grand projet Delphi (1,5 million de lignes de code), et nous passons à l'utilisation de processus agiles.Obtention des statistiques de couverture de test DUnit à l'aide de FinalBuilder et AQTime

Nous avons déjà un environnement d'intégration continue (FinalBuilder) que j'ai mis à jour pour inclure les tests unitaires (dUnit) et les métriques de code (CodeHealer) dans les e-mails de tous les membres de notre équipe de développement. Notre couverture de tests unitaires n'est pas excellente, alors j'essaie maintenant d'intégrer AQtime dans les résultats de couverture de test pour chaque build.

J'utilise la tâche "Exécuter le programme" pour exécuter l'exécutable de test unitaire, consigner les résultats et analyser le fichier par la suite. J'ai l'intention d'utiliser la tâche "Exécuter le script" pour exécuter AQtime (via COM) et exporter les résultats au format XML afin que je puisse analyser ces résultats.

Le problème que j'ai avec AQtime exécutant l'exécutable de test unitaire, je perds la capacité de surveiller l'exécutable de test unitaire directement. J'aimerais que FinalBuilder analyse les résultats des deux tâches. Est-ce que quelqu'un sait comment accéder aux résultats dUnit quand il est appelé depuis AQtime?

Répondre

7

Nous avons couru dans cette même voie, et nous ne testons pas courir DUnit de A la place, nous construisons et exécutons nos tests de Dunit en utilisant FinalBuilder. AQTime,

Nos tests unitaires utilisent XmlTestRunner, alors nous pouvons savoir si le test échoue ou pas très facilement en utilisant une requête XPath sur le fichier XML résultant.

Mise à jour: Une mise à jour récente de FinalBuilder 7.0 prend désormais en charge DUnit. C'est à travers son propre XMLTestrunner.pas, qui se trouve sous le répertoire FinalBuilder après l'installation. Ce coureur sort les résultats du test dans le même format que NUnit. Il s'intègre alors très bien dans le serveur FinalBuilder.

+0

Merci Robert. La version de dUnit qui était dans notre version n'a pas XMLTestRunner. J'ai téléchargé dUnit 9.3 à partir de sourceforge et j'ai récupéré XMLTestRunner à partir du dossier Contrib. Est-ce que tout ce que je voulais faire? – Catharz

+1

Catharz, vous devriez accepter une réponse si elle a été répondue pour vous. –

2

Vous décrivez en quelque sorte la configuration à laquelle nous évoluons lentement.

  • tests de DUnit sont compilées comme applications de la console à l'aide du TTextTestListener défini dans l'unité TextTestRunner.
  • Le serveur CI est un script cmd qui construit tous les projets et exécute tous les tests.
  • La sortie des tests sont redirigée vers un fichier.

Une solution pourrait être d'avoir le profil AQtime ces applications de la console tout en pouvoir tuyau les résultats dans un fichier qui peut être analysé plus tard ?!

Une autre solution pourrait être à mettre en œuvre votre propre objet TestListener et avoir cet objet écrire les résultats d'essai à l'eventlog, directement à un fichier journal, une base de données ou partout où vous le souhaitez et cette reprise par FinalBuilder.

Au lieu d'avoir quelque chose comme ceci dans votre fichier de projet

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

il deviendrait quelque chose comme ça

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

Merci pour la réponse. Lieven J'ai essayé d'obtenir AQtime pour rediriger les résultats de l'exécutable dUnit vers un fichier, mais cela n'a pas fonctionné. J'ai également jeté un coup d'oeil à la mise en œuvre de mon propre TestListener, qui semblait assez facile. Mais après avoir regardé le XMLTestRunner de dUnit 9.3, cela a semblé encore plus facile. – Catharz

+0

Aussi, je vous suggère de changer votre code à: TextTestRunner.RunRegisteredTests (rxbHaltOnFailures) de sorte que vous obtenez un code d'erreur <> 0 quand un test échoue. Excellent pour une intégration continue. – marius

+0

@marius: merci, je ne le savais pas. À l'heure actuelle, nous effectuons une recherche grep dans les résultats du test pour déterminer la quantité d'erreurs/d'échecs. –

Questions connexes