testng
TestNG-groepen
Zoeken…
Syntaxis
- @Test (groups = {"group1", "group.regression"}, dependOnGroups = {"group2", "group3"})
TestNG Groepsconfiguratie en basisvoorbeeld
Groepen kunnen worden geconfigureerd onder Suite
en / of Test
element van testng.xml
. Alle groepen die zijn gemarkeerd als opgenomen in tesng.xml
worden in aanmerking genomen voor uitvoering, een ervan wordt genegeerd. Als een @Test
methode meerdere groepen heeft en van die groepen als een enkele groep is uitgesloten in testng.xml
die @Test
methode niet uitgevoerd.
Hieronder vindt u de typische testng.xml
configuratie op Test
-niveau voor het uitvoeren van groepen:
<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>
En zo ziet de testklasse eruit:
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
}
}
Bij het uitvoeren van deze
GroupTest
TestNG
klasse wordt alleentestMethod3()
uitgevoerd.
Uitleg:
-
<include name="functest" />
alle testmethoden van defunctest
groep komen in aanmerking voor uitvoering als deze door geen enkele andere groep worden uitgesloten. -
<exclude name="regtest" />
geen testmethoden van deregtest
groep in aanmerking voor uitvoering. -
testMethod1()
entestMethod2()
bevinden zich in deregtest
groep, dus ze zijn niet uitgevoerd. -
testMethod3()
bevindt zich in deregtest
groep, dus deze wordt uitgevoerd.
TestNG MetaGroups - Groepen groepen
Met TestNG kunnen groepen worden gedefinieerd die andere groepen kunnen bevatten. MetaGroups combineren logisch een of meer groep (en) en regelen de uitvoering van de @Test
methoden die bij die groepen horen.
In onderstaand voorbeeld zijn er verschillende @Test
methoden die tot verschillende groep (en) behoren. Weinigen zijn specifiek voor een bepaalde stapel en weinig zijn regressie- en acceptatietests. Hier kunnen Metagroepen worden gemaakt. Laten we twee eenvoudige MetaGroups kiezen :
-
allstack
- omvat zowelliux.jboss.oracle
enaix.was.db2
groepen en maakt het mogelijk om alle testmethoden die bij een van die groepen horen samen te gebruiken. -
systemtest
- omvatallstack
,regression
enacceptance
en maakt het mogelijk om alle testmethoden die bij een van die groepen horen samen te gebruiken.
testng.xml configuratie
<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- klasse
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
}
}