testng
Groupes de test
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
, seultestMethod3()
sera exécuté.
Explication:
-
<include name="functest" />
toutes les méthodes de test du groupefunctest
sont éligibles pour une exécution si elles ne sont exclues par aucun autre groupe. -
<exclude name="regtest" />
aucune méthode de test du grouperegtest
peut être exécutée. -
testMethod1()
ettestMethod2()
sont dans le grouperegtest
, ils ne seront donc pas exécutés. -
testMethod3()
est dans le grouperegtest
, 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 :
-
allstack
- inclut à la fois les groupesliux.jboss.oracle
etaix.was.db2
et permet à toutes les méthodes de test appartenant à l'un de ces groupes d'être exécutées ensemble. -
systemtest
- inclut desallstack
, deregression
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
}
}