2009-07-10 8 views
1

Nous avons remarqué que lorsque les cas de test de testNG étendent TestCase (JUnit), ces tests commencent à s'exécuter en tant que tests Junit. Aussi, je devrais probablement mentionner, les tests sont effectués par Maven.tests testNG prolongeant BaseTest

Est-ce un bug ou une fonctionnalité? Est-il possible de remplacer ce comportement et d'exécuter ces types de tests en tant que tests TestNG? Connaissez-vous un lien où TestNG en parle?

merci.

Répondre

0

En regardant le maven surefire plugin info Je ne vois aucun moyen de sélectionner un test pour le traitement TestNG seulement s'il étend également une classe jUnit 3. IFAIK votre meilleur pari est de simplement travailler sur chaque classe séparément, en supprimant les références jUnit, puis en testant à nouveau. De cette façon, vous n'avez jamais le mélange dans une classe et vous devriez éviter les problèmes. Pour rendre le travail gérable, je serais enclin à le faire seulement quand je changeais un cas de test pour une autre raison.

+0

merci Michael. Je suis entièrement d'accord –

1

Je ne pensais pas que TestNG ou JUnit nécessitaient des classes de base maintenant que les deux utilisent des annotations pour spécifier des méthodes de test. Pourquoi pensez-vous que vous devez prolonger une classe? Et pourquoi diable une classe TestNG étendrait-elle la classe de base JUnit TestCase? Est-ce une surprise qu'ils fonctionnent comme des tests JUnit?

Cela ne ressemble pas à un bug ou à une fonctionnalité mais à une erreur de l'utilisateur de votre part. Je ne suis pas sûr de ce que vous obtenez ici. Pourquoi voudriez-vous faire cela?

MISE À JOUR: Votre question me prêterait à confusion. Avez-vous exécuté des tests JUnit avec succès que vous n'essayez pas de convertir en TestNG, ou vice versa? J'ai du mal à comprendre ce que vous essayez d'accomplir ici. Laissez Maven en dehors de cela. Peu importe qu'ils soient dirigés par vous, Ant ou Maven.

+0

Je ne dis pas que l'on devrait étendre BaseCase de Junit. Si vous écrivez un test TestNG à partir de zéro alors oui, la meilleure façon de le faire est d'annoter vos classes de test avec l'annotation @Test et c'est tout. Cependant, vous n'avez pas cette capacité lorsque vous essayez de migrer de Junit vers TestNG. Vous ne pouvez pas supprimer aveuglément la clause extends dans ce cas et lancer l'annotation @Test partout –

+0

Euh, oui vous pouvez si vous utilisez JUnit 4. Et vous devriez l'être. – duffymo

+0

ok, un dernier essai. Dans mon projet j'ai des tests de junit que je cours avec Tesng. Ce sont des tests hérités et comme ce sont des tests de junit, ils prolongent une classe. Donc maintenant, quand vous annotez ce test avec l'annotation @Test et que vous l'exécutez avec TestNG, il est exécuté comme un test Junit, mais je veux qu'il fonctionne avec les caractéristiques de TestNG comme setUp/teardown pour être appelé une fois par test, test les méthodes n'ont pas besoin de commencer par le test de mot etc. Mais il semble que c'est un comportement par défaut de test du test qui étend BaseCase c'est un test de junit et qui ne peut être annulé –