IntelliJ IDEA + TestNG: Exécuter une méthode avant chaque test dans un groupe

StackOverflow https://stackoverflow.com/questions/3602404

  •  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?

Était-ce utile?

La solution

  1. 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.
  2. @BeforeMethod et @AfterMethod semblent brisés avec des groupes.
  3. 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:

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>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top