testng
Gruppi TestNG
Ricerca…
Sintassi
- @Test (groups = {"group1", "group.regression"}, dependsOnGroups = {"group2", "group3"})
Configurazione Gruppi TestNG ed esempio di base
I gruppi possono essere configurati sotto l'elemento Suite
e / o Test
di testng.xml
. Tutti i gruppi contrassegnati come inclusi in tesng.xml
verranno considerati per l'esecuzione, escluso uno verrà ignorato. Se un @Test
metodo ha più gruppi e da questi gruppi, se uno stesso gruppo è escluso in testng.xml
che @Test
metodo non verrà eseguito.
Di seguito è riportata la tipica configurazione testng.xml
a livello di Test
per i gruppi in esecuzione:
<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>
Ecco come sarà la classe di test:
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
}
}
Sull'esecuzione
GroupTest
TestNG
classe solotestMethod3()
verrà eseguita.
Spiegazione:
-
<include name="functest" />
tutti i metodi di test del gruppofunctest
sono idonei per l'esecuzione se non esclusi da qualsiasi altro gruppo. -
<exclude name="regtest" />
nessun metodo di test del grupporegtest
è idoneo per l'esecuzione. -
testMethod1()
etestMethod2()
sono nel grupporegtest
, quindi non avranno eseguito. -
testMethod3()
è nel grupporegtest
, quindi verrà eseguito.
TestNG MetaGroups - Gruppi di gruppi
TestNG consente di definire gruppi che possono includere altri gruppi. I MetaGroup combinano logicamente uno o più gruppi e controllano l'esecuzione dei metodi @Test
appartenenti a quei gruppi.
Nell'esempio sottostante ci sono vari metodi @Test
che appartengono a diversi gruppi. Pochi sono specifici per stack particolari e pochi sono regressione e test di accettazione. Qui possono essere creati i MetaGroup. Selezioniamo due semplici MetaGroup :
-
allstack
- include entrambi i gruppiliux.jboss.oracle
eaix.was.db2
e consente a tutti i metodi di test appartenenti a uno di questi gruppi di funzionare insieme. -
systemtest
- include i gruppiallstack
,regression
eacceptance
e consente a tutti i metodi di test appartenenti a uno di questi gruppi di funzionare insieme.
configurazione 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>
MetaGroupsTest class
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
}
}