URL: https://linuxfr.org/users/pulkomandy/journaux/un-harnais-de-test-pour-qt Title: Un harnais de test pour Qt Authors: pulkomandy Date: 2018年12月07日T17:05:40+01:00 License: CC By-SA Tags: c++, qt et tests Score: 8 Bonjour Nal, Je viens de publier ce harnais de test qui permet de lancer facilement des tests écrits avec le moteur de Qt et de collecter les résultats dans un rapport en HTML. Le contexte =========== Qt fournit quelques classes pour réaliser des tests unitaires, mais ils proposent de générer une application séparée pour chaque test, et de les lancer toutes à la fois via un "make check". Les résultats sont alors affichés sur la console et pénibles à lire. De plus il faut écrire beaucoup de code "inutile" pour générer le test sous forme d'un exécutable. La solution =========== L'idée de ce harnais est de simplifier le code autour du test. On aura donc: - Un seul exécutable, c'est plus simple - Une possibilité de lancer tous les tests, ou un seul, via la ligne de commande - On conserve l'exécution de chaque test comme un process séparé, ce qui évite qu'un test perturbe le suivant - Une façon très simple (une seule ligne de code) d'enregistrer un test supplémentaire - Une sortie en XML avec une feuille de style xslt pour générer un rapport en HTML avec les tests réussis, échoués, et aussi les logs, warnings et erreurs émis par le code testé pendant l'exécution. Voilà, rien de très exceptionnel mais il me semble que ça manquait dans le système de tests unitaires fourni avec Qt. Concrètement, une fois les tests écrits il y a juste à lancer "make check" pour obtenir directement le rapport en HTML. Mot de la fin ============= Je vous laisse fouiller le [dépôt github](https://github.com/viveris/qtestframework/) pour ceux qui souhaitent approfondir. Merci à mon employeur [Viveris Technologies](http://viveris.fr) qui a autorisé la publication de ce code sous licence libre (pour ceux qui pensent que c'est important, c'est du MIT). Ce code a été écrit il y a quelques années, mais c'est seulement maintenant que j'ai pu l'extraire du projet dans lequel il a été développé.