2010-12-22 2 views
5

Hé les gars ma question est simple et directe. J'ai ce scénario.Testng traitant de l'héritage de test

J'ai (Test-A) Test de test entièrement annoté dans un projet. Remarque: ce test s'exécute avec succès. Puis j'ai un autre test de test (Test-B) dans un projet différent s'étendant (Test-A). Ce nouveau (Test-B) n'a pas d'annotations depuis son extension d'une classe qui le fait. Mon attente est que lorsque vous exécutez ce test (Test-B), il doit exécuter les cas de test dans la super classe en plus du testcase défini en son sein qui est la manière orientée objet. Le problème est que testng ne le reconnaît même pas comme test car il n'y a pas d'annotation dedans. Je suppose que le traitement d'annotation de test ne considère pas l'annotation de super-classe?

+0

Je viens de remarquer que tout ce qui est requis pour exécuter tous les tests de la superclasse est d'ajouter un seul test annoté dans la classe enfant qui appelle un testcase dans la superclasse. Cela provoque l'exécution de tous les tests de la super classe. bizarre? – Afamee

+0

une autre mise à jour. Tout test dans la classe enfant est suffisant pour déclencher tous les tests en super classe. Il ne doit pas être un test qui appelle le test de super classe. – Afamee

+0

vous devriez soumettre la réponse à votre propre question. Sinon, il est "sans réponse" et perd du temps pour ceux qui veulent répondre à des questions sans réponse. – hidralisk

Répondre

2

(Note, en utilisant le bon vieux JUnit 4 ici, non TestNG)

Eclipse ne semble rechercher la hiérarchie des classes pour @test annotations si la classe mère est dans le même projet. L'exemple suivant a fonctionné pour moi:

public class A { 
    @Test public void a() { 

    } 
} 

public class B extends A { 

} 

Lors de l'exécution B comme un test JUnit, il exécute a() et passes. J'ai ensuite créé deux projets Eclipse, Test A et Test B. J'ai fait le lien B du projet A et répété les étapes précédentes comme vous l'avez fait, avec la classe A dans le projet A etc. Maintenant, la classe B est exécutée comme une unité test dit "Aucun test JUnit trouvé." Ensuite, l'ajout d'un @Test à la classe B résout le problème. Donc, nous pouvons déduire qu'Eclipse ne quitte pas les limites du projet en cours lors de la recherche de cas de test. Je pense que votre solution de contournement d'ajouter un seul @Test à votre classe est raisonnable, même si je ne sais pas pourquoi vous voudriez faire cela.

Questions connexes