Utilisation de Google Test 1.6 (Windows 7, Visual Studio C ++). Comment puis-je désactiver un test donné? (aka comment puis-je empêcher un test de s'exécuter). Puis-je faire autre chose que de commenter l'ensemble du test?
googletest
Utilisateur
la source
la source
Vous pouvez également exécuter un sous-ensemble de tests , selon la documentation:
Exécution d'un sous-ensemble de tests
Pas la plus jolie solution, mais ça marche.
la source
Vous pouvez maintenant utiliser la
GTEST_SKIP()
macro pour ignorer conditionnellement un test lors de l'exécution. Par exemple:Notez qu'il s'agit d'une fonctionnalité très récente , vous devrez peut-être mettre à jour votre bibliothèque GoogleTest pour l'utiliser.
la source
GTEST_SKIP()
est disponible à partir de la 1.10.0.GTEST_SKIP_("some message")
(notez le trait de soulignement de fin)Voici l'expression pour inclure les tests dont les noms contiennent les chaînes foo1 ou foo2 et exclure les tests dont les noms contiennent les chaînes bar1 ou bar2:
la source
Je préfère le faire en code:
Je peux soit commenter les deux lignes pour exécuter tous les tests, décommenter la première ligne pour tester une seule fonctionnalité sur laquelle j'étudie / travaille, soit décommenter la deuxième ligne si un test est interrompu mais je veux tester tout le reste.
Vous pouvez également tester / exclure une suite de fonctionnalités en utilisant des caractères génériques et en écrivant une liste, "MyLibrary.TestNetwork *" ou "-MyLibrary.TestFileSystem *".
la source
export GTEST_FILTER='*'
.*
" pas "". Au lieu de cela, je vais simplement utiliser une autre variable d'environnement qui remplace le filtre.Si plus d'un test est nécessaire, sautez
la source
Pour une autre approche, vous pouvez encapsuler vos tests dans une fonction et utiliser des vérifications conditionnelles normales à l'exécution pour les exécuter uniquement si vous le souhaitez.
Ceci est utile pour moi car j'essaie d'exécuter certains tests uniquement lorsqu'un système prend en charge IPv6 double pile.
Techniquement, ce truc dualstack ne devrait pas vraiment être un test unitaire car cela dépend du système. Mais je ne peux pas vraiment faire de tests d'intégration tant que je n'ai pas testé qu'ils fonctionnent de toute façon et cela garantit qu'il ne signalera pas les échecs quand ce n'est pas la faute des codes.
En ce qui concerne le test, j'ai des objets stub qui simulent la prise en charge par un système de la double pile (ou l'absence de) en construisant de fausses sockets.
Le seul inconvénient est que la sortie du test et le nombre de tests changeront, ce qui pourrait entraîner des problèmes avec quelque chose qui surveille le nombre de tests réussis.
Vous pouvez également utiliser ASSERT_ * plutôt que EQUAL_ *. Assert will about le reste du test s'il échoue. Empêche un grand nombre de choses redondantes d'être vidées sur la console.
la source
J'avais le même besoin de tests conditionnels et j'ai trouvé une bonne solution de contournement. J'ai défini une macro TEST_C qui fonctionne comme une macro TEST_F, mais elle a un troisième paramètre, qui est une expression booléenne, évalué à l'exécution dans main.cpp AVANT le démarrage des tests. Les tests qui évaluent faux ne sont pas exécutés. La macro est moche, mais elle ressemble à:
De plus, dans votre main.cpp, vous avez besoin de cette boucle pour exclure les tests qui évaluent false:
la source