Comment paramétrer junit Test de Suite
Est-il possible de paramétrer un TestSuite dans junit 4 ?
Pour la déclaration d'une classe comme une suite de tests j'ai besoin de l'annotation @RunWith(Suite.class)
, mais la même annotation est également nécessaire de déclarer le test paramétrée: @RunWith(Parameterized.class)
donc je ne peux pas ajouter les deux à la même classe.
J'ai trouvé un similaire question dans ce site qui n'a pas beaucoup d'aide. Jusqu'à présent, tous les exemples que j'ai trouvé expliquer comment paramétrer simple, les tests unitaires, pas un test complet tuite.
OriginalL'auteur Sergio | 2014-02-26
Vous devez vous connecter pour publier un commentaire.
Je crois que la base de la réponse est Non, car comme vous l'avez dit, l' @RunsWith seulement prendre un paramètre. J'ai trouvé un blogue que j'ai un peu créatif dans la façon de gérer cette situation.
Nous n'utilisons pas le paramétrée tests, mais peut vous pouvez créer une suite séparée comme nous ne qui répertorie uniquement les classes de test et de le paramétré test pourrait être une partie de cela. J'ai modifié notre suite de test pour inclure un paramétrée de la classe de test pour une partie de la suite et il a fonctionné très bien. Nous avons créer notre suite comme ci-dessous où PrimeNumberCheckerTest était simple, j'ai tiré à partir du web.
Voici le code source pour le paramétrable en cas de test;
OriginalL'auteur mikemil
J'ai été en mesure de paramétrer une suite de tests et d'utiliser ses données dans une classe de test membre du bureau comme suit:
Dans JUTsuite:
Ensuite, dans la classe de test:
JUT_KB_integrity
est censé être un constructeur ou un setter?Jamais l'esprit, je l'ai corrigée. Merci pour l'explication détaillée.
OriginalL'auteur Alicia
Je suis d'accord, il n'est pas possible avec la condition des classes, mais il existe des solutions de contournement que vous obtiendrez la plupart du chemin, à l'instar de @mikemil.
J'ai passé un certain temps à l'extension de Suite et la délégation de la Paramétrable, avec peu de succès; il est possible de construire coureur qui fait ce que vous voulez, et le code est plus ou moins écrit pour vous dans ces deux classes. La manière dont ces classes d'interagir (en particulier, la définition de
Parameterized#getChildren()
) rend difficile l'extension ou le déléguer à ces classes d'accomplir ce que vous avez besoin, mais la création d'une toute nouvelle classe que s'étendParentRunner
et des ascenseurs de code à partir des deux autres serait assez facile.Je vais essayer d'obtenir plus de temps pour revenir plus tard. Si vous faites construire une nouvelle roue avant je obtenir autour d'elle, s'il vous plaît poster une réponse, j'aimerais l'utiliser moi-même.
Désolé, j'ai travaillé principalement avec nunit ces derniers temps.
Pas de problème. Mais merci de répondre quand même 🙂
OriginalL'auteur Paul Hicks
la meilleure solution, garder le costume de classes séparément dans une classe vide.
Par exemple, je suis en train de tester les connexions Paramétré les tests et les mettre dans un costume (pour la navigation, de mesure du rendement)
et LoginPageTest est en fait Parameterizedtests
OriginalL'auteur Shantonu
Comme déjà indiqué à plusieurs reprises, il n'est pas possible de paramétrer une suite de tests avec les coureurs fournis par
JUnit 4
.De toute façon, je ne le recommande pas pour faire de votre testclasses dépendante de certains fournis par l'extérieur de l'état. Si vous souhaitez exécuter une seule testclass?
Je vous recommande de le faire à votre séparer les classes de test
@Parameterized
et l'utilisation d'une classe utilitaire pour fournir les paramètres:OriginalL'auteur Markus Mitterauer
Vous avez raison: les Deux
Suite
etParameterized
sont les Coureurs et un seulRunner
peut être utilisé pour exécuter un test à la fois. Standard JUnit 4 n'est pas un Coureur de combiné.Vous pouvez mettre en place votre propre Coureur ou d'avoir un coup d'oeil à ceci prêt-à-utilisation de la bibliothèque qui fournit un
ParameterizedSuite
Coureur: https://github.com/PeterWippermann/parameterized-suiteParamétrée suite de test ressemble à ceci:
OriginalL'auteur Peter Wippermann
Peut-être que cette réponse aide: Paramétrable unité de suites de tests
Il utilise
@RunWith(Enclosed.class)
et semble résoudre le problème.OriginalL'auteur allofmex