GoogleTest: Comment passer un test?
À L'Aide De Google Test 1.6 (Windows 7, Visual Studio C++). Comment puis-je désactiver un test? (aka comment puis-je empêcher un test de fonctionnement). Est-ce que je peux faire en plus de commenter l'ensemble du test?
Vous devez vous connecter pour publier un commentaire.
La docs pour Google Test de 1,7 suggérer:
"Si vous avez un bris de test que vous ne pouvez pas fixer le droit de suite, vous pouvez ajouter le DISABLED_ préfixe à son nom. Ce sera l'exclure de l'exécution."
Exemples:
Vous pouvez également exécuter un sous-ensemble de tests, d'après la documentation:
De l'exécution d'un sous-ensemble des Tests
Pas la plus jolie de la solution, mais il fonctionne.
Ici est l'expression d'inclure des tests dont les noms ont les chaînes toto1 ou foo2 et exclut les tests dont les noms ont les chaînes de bar1 ou bar2 en eux:
Je préfère le faire dans le code:
Je peux soit en commentaire les deux lignes pour exécuter tous les tests, décommentez la première ligne pour tester une seule fonctionnalité que je recherche/travail ou décommentez la deuxième ligne si un test est brisé, mais j'ai envie de tout tester d'autre.
Vous pouvez également tester/exclure une suite de fonctions en utilisant des caractères génériques et la rédaction d'une liste, "MyLibrary.TestNetwork*" ou "-MyLibrary.TestFileSystem*".
export GTEST_FILTER='*'
.*
" non "". Au lieu de cela, je vais utiliser une autre variable d'environnement qui remplace le filtre.Vous pouvez maintenant utiliser le
GTEST_SKIP()
macro conditionnelle, passez un test au moment de l'exécution. Par exemple:Remarque que c'est une très caractéristique récente de sorte que vous devez mettre à jour votre GoogleTest de la bibliothèque de l'utiliser.
Si d'autres tests sont nécessaires être ignorées
Pour une autre approche, vous pouvez envelopper vos tests dans une fonction et l'utilisation normale conditionnelle des contrôles lors de l'exécution pour exécuter uniquement si vous le souhaitez.
C'est utile pour moi car je suis en train de faire quelques tests que lorsqu'un système supporte IPv6 double pile.
Techniquement que double pile choses ne s'agit pas d'un test unitaire, puisqu'il dépend du système. Mais je ne peux pas vraiment faire tout les tests d'intégration jusqu'à ce que j'ai testé, ils travaillent de toute façon, ce qui assure de ne pas signaler les échecs quand ce n'est pas les codes d'anomalie.
Comme pour le test j'ai des objets de talon que simuler un système de support pour double pile (ou absence de), par la construction de faux sockets.
Le seul inconvénient est que le test de sortie et le nombre de tests de changement qui pourrait causer des problèmes avec quelque chose qui surveille le nombre de tests réussis.
Vous pouvez également utiliser ASSERT_* plutôt que de EQUAL_*. Affirmer le reste de l'épreuve en cas d'échec. Empêche beaucoup de trucs redondants l'objet d'un dumping sur la console.
J'ai eu le même besoin pour les tests conditionnels, et j'ai trouvé une bonne solution de contournement. J'ai défini une macro TEST_C qui fonctionne comme un TEST_F macro, mais il a un troisième paramètre, qui est une expression booléenne, évalué l'exécution dans main.cpp AVANT que les tests sont lancés. Les Tests qui permettent d'évaluer les faux ne sont pas exécutées. La macro est moche, mais ça ressemble:
En outre, dans votre main.cpp, vous avez besoin de cette boucle d'exclure les tests qui évaluent faux: