Séparer les cas de test dans plusieurs fichiers dans google test
Je suis nouveau dans google test C++ cadre. Il est très facile à utiliser, mais je me demandais comment séparer le cas dans plusieurs fichiers de test. Quelle est la meilleure façon de faire?
Comprennent les .fichiers cpp est directement une option. À l'aide d'un en-tête semble que ne fait rien...
Toute aide est la bienvenue
Vous devez vous connecter pour publier un commentaire.
Créer un fichier qui contient seulement le principal pour exécuter les tests.
Puis mettre les tests dans d'autres fichiers. Vous pouvez mettre autant d'essais que vous le souhaitez dans un fichier. La création d'un fichier par classe ou par fichier source peut bien fonctionner.
Ceci n'exige que tous les tests peuvent partager le même principal. Si vous avez à faire quelque chose de spécial, vous devrez construire plusieurs cibles.
.cpp
fichiers, accédez à votre google-test alimenté cible C++ dans Xcode et activerPerform Single-Object prelink
dans les options de compilation.Je pense que le principal point manquant dans l'autre réponse est que vous devez
#include
les fichiers de test.Ici, c'est ma façon de diviser les tests:
Ne pas utiliser le même nom pour un test à deux reprises dans tous les fichiers!
Utiliser le Makefile de googletest et ajouter les règles:
Je utiliser une convention de nommage pour commander les essais par les lettres alphabétiques:
Ensuite, vous pouvez exécuter des tests avec
Que j'ai rencontré le même problème récemment.
Je archivées mes test_cases.o et main.o en bibliothèque statique (test_main.a), puis les lier avec d'autres bibliothèques à l'exécutable final.
Je remarque qu'il ne trouve pas le cas de test si je test_main.un.
Cependant, si je le lien entre les objets séparément, ça marche!!!
Et j'ai trouvé la réponse dans ce post Pourquoi créer un .un fichier à partir d' .o la liaison statique?
Je soupçonne qu'elle est liée à la conception de Google Test.
La RUN_ALL_TESTS() macro exécuter toutes les instances de la classe de test de manière dynamique, ce qui signifie qu'il a obtenu les cas de test au cours de moment de l'exécution.
En conséquence, il n'est pas nécessaire de lier les instances de la classe de test, de sorte que l'éditeur de liens ne sera pas de lien test_case.o.