La méthode TestNG @BeforeMethod n'est pas appelée lorsqu'elle réside dans la superclasse et qu'un groupe spécifique est exécuté
Je suis en train d'utiliser un groupe pour exécuter un sous-ensemble de tests pertinents pour ce que je suis en train de travailler sur appelé "courant". Le problème est que si j'utilise un super-classe à faire une certaine configuration dans un @BeforeMethod, la méthode s'exécute lorsque j'exécute tous les tests, mais ne fonctionne pas quand je l'exécute avec le groupe "actuel" spécifié.
Donc, quand je lance tous les tests, le emptyTest échoue parce que l' @BeforeMethod est appelé, au moment de l'exécution du groupe actuel, la méthode n'est pas appelée. Note: Si j'ajoute @Test(groupes = {"actuel"}) à la sous-classe, alors qu'il ne s'exécutent - cependant, il exécute toutes les sous-classes ne sont pas étiquetées avec "actuel", ce qui va à l'encontre de l'objectif de la "actuel" du groupe.
Si il ya une meilleure façon d'accomplir ce comportement, je suis ouvert à toutes les solutions.
Grâce,
Rançon
Superclasse:
public class TestNGSuperclass {
@BeforeMethod
public void failingToShowThatItIsNotRun() {
Assert.fail();
}
}
Sous-classe:
@Test(groups = {"current"})
public class TestNGCurrentGroup extends TestNGSuperclass {
public void emptyTest() {}
}
TestNG Configuration:
<test name="current">
<groups>
<run>
<include name="current"/>
</run>
</groups>
<packages>
<package name="uiowa.wf.test.*"/>
</packages>
</test>
<test name="all-tests">
<packages>
<package name="uiowa.wf.test.*"/>
</packages>
</test>
source d'informationauteur Ransom Briggs
Vous devez vous connecter pour publier un commentaire.
Votre
@BeforeMethod
doit faire partie du groupe, vous êtes en cours d'exécution.Vous pouvez également utiliser
@BeforeMethod(alwaysRun = true)
si vous ne voulez pas coder en dur la valeur de votre groupe et si vous pensez que vous aurez toujours envie d'exécuter cette méthode, quel que soit le groupe que vous sont actuellement en cours d'exécution.Avez-vous essayé
@BeforeMethod(groups = {"current"})
? Je suis venu à la conclusion que TestNG groupes et à l'héritage n'est pas vraiment bien.Par exemple, les travaux ci-dessus si vous exécutez tout dans le groupe
current
mais pas si vous exécutez tout autres que le groupecurrent
et de la classe de base est utilisée pour les deux groupes.Je suis en train de refactoring tous nos classes de test pour éliminer les sous-classement et de rendre l'utilisation de la composition à la place.