2010-04-21 8 views
9

Je commence juste à utiliser QTestLib. J'ai traversé les manual et tutorial. Bien que je comprenne comment créer des tests, je ne comprends pas comment rendre ces tests pratiques. Mon arrière-plan de test unitaire est NUnit et MSTest. Dans ces environnements, il était trivial (en utilisant une interface graphique, au moins) d'alterner entre un seul test, ou tous les tests dans une seule classe de test, ou tous les tests du projet entier, en cliquant simplement sur le bouton droit. Tout ce que je vois dans QTestLib est soit vous utilisez la macro QTEST_MAIN pour exécuter les tests dans une seule classe, puis compiler et tester chaque fichier séparément; ou utilisez QTest::qExec() dans main() pour définir les objets à tester, puis modifiez-les manuellement et recompilez lorsque vous souhaitez ajouter/supprimer des classes de test.Tests unitaires dans QTestLib - exécution d'un seul test/tests en classe/tous les tests

Je suis sûr qu'il me manque quelque chose. Je voudrais pouvoir facilement:

  • Exécuter une méthode d'essai unique
  • Exécutez les tests dans toute une classe
  • tous les tests

Tous ceux appelleraient le approprié fonctions de configuration/démontage.

EDIT: Bounty maintenant disponible. Il doit y avoir un meilleur moyen, ou un coureur d'essai GUI qui le gère pour vous ou quelque chose. Si vous utilisez QtTest dans un environnement piloté par les tests, laissez-moi savoir ce qui fonctionne pour vous. (Scripts, coureurs de test, etc.)

+0

Vous devriez jeter un oeil à: http://stackoverflow.com/questions/9944507/how-to-compose-all-qttestlib-unit-tests-results-in-a-single-file-while-using- a/10165709 # 10165709 – muenalan

Répondre

5

Vous pouvez exécuter uniquement des cas de test sélectionnés (méthodes d'essai) par des noms de test qui passe comme command line arguments:

myTests.exe myCaseOne myCaseTwo 

Il se déroulera tous INIT/nettoyages trop. Malheureusement, il n'y a pas de support pour les jokers/pattern, donc pour exécuter tous les cas commençant par une chaîne donnée (je suppose que c'est ce que vous voulez dire par "exécuter les tests dans une classe entière"), bash/perl/quelquechose) qui appelle:

myTests.exe -functions 

analyse les résultats et exécute des tests sélectionnés en utilisant la première syntaxe.

Pour exécuter tous les cas, il suffit de ne passer aucun paramètre:

myTests.exe 
+0

Peut-être qu'ils vont améliorer les fonctionnalités dans une version future .... –

1

Les trois caractéristiques demandées par l'OP, sont aujourd'hui intégrés dans la Qt Creator.

Le projet sera automatiquement analysé pour les tests et ils apparaîtront dans le volet Test. En bas à gauche dans la capture d'écran:

Qt Creator screenshot

Chaque test et les données correspondantes peuvent être activées en cliquant sur la case à cocher. Le menu contextuel permet d'exécuter tous les tests, tous les tests d'une classe, uniquement le test sélectionné ou un seul. Comme demandé.

Les résultats du test seront également disponibles auprès de Qt Creator. Un indicateur de couleur indiquera réussite/échec pour chaque test, ainsi que des informations supplémentaires comme les messages de débogage.

En combinaison avec Qt Creator, l'utilisation de la macro QTEST_MAIN pour chaque scénario de test fonctionnera bien, car chaque exécutable compilé est appelé automatiquement par Qt Creator.

Pour une présentation plus détaillée, reportez-vous à la section Running Autotests du manuel Qt Creator.