Recherche…


Syntaxe

  • @Test (groups = {"group1", "group.regression"}, comesOnGroups = {"group2", "group3"})

Configuration de TestNG Groups et exemple de base

Les groupes peuvent être configurés sous Suite et / ou élément Test de testng.xml . Tous les groupes qui sont marqués comme inclus dans tesng.xml seront considérés pour l'exécution, un exclu sera ignoré. Si une méthode @Test a plusieurs groupes et de ces groupes si un seul groupe est exclu dans testng.xml , la méthode @Test ne sera pas exécutée.

Vous trouverez ci-dessous la configuration typique de testng.xml au niveau du Test pour les groupes en cours d'exécution:

<suite name="Suite World">
<test name="Test Name">
  <groups>
    <run>
      <include name="functest" />
      <exclude name="regtest" />
    </run>
  </groups>
  <classes>
    <class name="example.group.GroupTest"/>
  </classes>
</test>
</suite>

Et ce à quoi sa classe de test ressemblera:

package example.group;

import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;

public class GroupTest {
    
    @BeforeClass
    public void deSetup(){
        //do configuration stuff here
    }
    
    @Test(groups = { "functest", "regtest" })
    public void testMethod1() {
    }

    @Test(groups = {"functest", "regtest"} )
    public void testMethod2() {
    }

    @Test(groups = { "functest" })
    public void testMethod3() {
    }
    
    @AfterClass
    public void cleanUp(){
        //do resource release and cleanup stuff here
    }
}

Lors de l'exécution de cette classe GroupTest TestNG , seul testMethod3() sera exécuté.

Explication:

  • <include name="functest" /> toutes les méthodes de test du groupe functest sont éligibles pour une exécution si elles ne sont exclues par aucun autre groupe.
  • <exclude name="regtest" /> aucune méthode de test du groupe regtest peut être exécutée.
  • testMethod1() et testMethod2() sont dans le groupe regtest , ils ne seront donc pas exécutés.
  • testMethod3() est dans le groupe regtest , il sera donc exécuté.

TestNG MetaGroups - Groupes de groupes

TestNG permet de définir des groupes pouvant inclure d'autres groupes. Les MetaGroups combinent logiquement un ou plusieurs groupes et contrôlent l'exécution des méthodes @Test appartenant à ces groupes.

Dans l'exemple ci-dessous, il existe différentes méthodes @Test appartenant à différents groupes. Peu sont spécifiques à une pile particulière et peu sont des tests de régression et d'acceptation. Ici, MetaGroups peut être créé. Choisissons deux simples MetaGroups :

  1. allstack - inclut à la fois les groupes liux.jboss.oracle et aix.was.db2 et permet à toutes les méthodes de test appartenant à l'un de ces groupes d'être exécutées ensemble.
  2. systemtest - inclut des allstack , de regression et d' acceptance et permet à toutes les méthodes de test appartenant à l'un de ces groupes d'être exécutées ensemble.

configuration testng.xml

<suite name="Groups of Groups">
    <test name="MetaGroups Test">
        <groups>
            <!-- allstack group includes both liux.jboss.oracle and aix.was.db2 groups -->
            <define name="allstack">
                <include name="liux.jboss.oracle" />
                <include name="aix.was.db2" />
            </define>

            <!-- systemtest group includes all groups allstack, regression and acceptance -->
            <define name="systemtest">
                <include name="allstack" />
                <include name="regression" />
                <include name="acceptance" />
            </define>

            <run>
                <include name="systemtest" />
            </run>
        </groups>

        <classes>
            <class name="example.group.MetaGroupsTest" />
        </classes>
    </test>

</suite>

Classe MetaGroupsTest

package example.group;

import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;

public class MetaGroupsTest {

    @BeforeMethod
    public void beforeMethod(){
        //before method stuffs - setup
    }

    @Test(groups = { "liux.jboss.oracle", "acceptance" })
    public void testOnLinuxJbossOracleStack() {
        //your test logic goes here
    }

    @Test(groups = {"aix.was.db2", "regression"} )
    public void testOnAixWasDb2Stack() {
        //your test logic goes here
    }

    @Test(groups = "acceptance")
    public void testAcceptance() {
        //your test logic goes here
    }

    @Test(groups = "regression")
    public void testRegression(){
        //your test logic goes here
    }

    @AfterMethod
    public void afterMthod(){
        //after method stuffs - cleanup
    }
}


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow