IntelliJ IDEA + TestNG: Exécuter une méthode avant chaque test dans un groupe
-
25-09-2019 - |
Question
J'apprends à utiliser TestNG pour IntelliJ IDEA 9.
Pour autant que je comprends, un moyen de mettre un test dans un groupe appelé name
est à annoter @Test(group = "name")
. Pour exécuter une méthode avant chaque test, annoter avec @BeforeMethod
.
Dans ma configuration de test Je veux une méthode pour exécuter avant chaque test que dans un groupe particulier. Donc, il y a une beforeA
méthode qui fonctionne avant chaque test dans le groupe A
, une méthode beforeB
en cours d'exécution avant chaque test B
et ainsi de suite.
Exemple de code:
public class TestExample
{
@BeforeMethod(groups = "A")
public void beforeA()
{
System.out.println("before A");
}
@BeforeMethod(groups = "B")
public void beforeB()
{
System.out.println("before B");
}
@Test(groups = "A")
public void A1()
{
System.out.println("test A1");
}
@Test(groups = "A")
public void A2()
{
System.out.println("test A2");
}
@Test(groups = "B")
public void B1()
{
System.out.println("test B1");
}
@Test(groups = "B")
public void B2()
{
System.out.println("test B2");
}
}
Je me attends comme sortie
before A
test A1
before A
test A2
before B
test B1
before B
test B2
mais j'obtiens ce qui suit:
before A
before B
before A
before B
test A2
before A
before B
before A
before B
test B1
===============================================
test B2
===============================================
Custom suite
Total tests run: 4, Failures: 0, Skips: 0
===============================================
IntelliJ IDEA a mis en lumière toutes mes annotations avec le message « Le groupe A est non défini » ou « groupe B est indéfini ».
Qu'est-ce que je fais mal?
La solution
- La liste n'est pas en bon état, cela est la faute de IntelliJ. Exécutez le test en ligne de commande ou avec Maven l'ordre sera correct.
-
@BeforeMethod
et@AfterMethod
semblent brisés avec des groupes. - IntelliJ rappelez-vous des groupes que vous avez utilisé avant, si vous utilisez un groupe qui ne se souvient encore, le message « groupe X est non défini » sera affiché. Juste pres alt + Entrée sur un groupe non défini pour le rappeler.
Ressources:
- TestNG bug tracker - BeforeMethod et les groupes AfterMethod le soutien brisé
- TestNG Liste de diffusion - Ordre d'exécution pour méthodes de configuration impliquant des groupes
- TestNG Liste de diffusion - avant et après pour groupes
- talios.com - De nouvelles inspections pour le IntelliJ TestNG Plugin
Autres conseils
J'ai demandé Intellij de le réparer. S'il vous plaît vérifier problème: http://youtrack.jetbrains.net/issue/IDEA-67653 Nous devons voter pour si JetBrains va fixer
@BeforeMethod(groups =...)
n'est pas censé fonctionner avant chaque méthode dans un groupe.
Il se déroulera avant chaque méthode dans une classe. La différence est, il vous reste plus qu'à appartenir à un groupe particulier, rien de plus. Voir DOCS
Comme mentionné par TEH EMPRAH @BeforeMethod est supposé ne pas courir avant chaque méthode qui appartient au même groupe que lui.
Pour ce faire, vous devez vous configurer testng.xml correctement. Pour votre sortie attendue, il devrait ressembler si
<suite....>
<test name="A">
<groups>
<run>
<include name="A"/>
</run>
</groups>
<classes>
<class name="...TestExample"/>
</classes>
</test>
<test name="B">
<groups>
<run>
<include name="B"/>
</run>
</groups>
<classes>
<class name="...TestExample"/>
</classes>
</test>
</suite>