testng
Grupy TestNG
Szukaj…
Składnia
- @Test (groups = {"group1", "group.regression"}, dependsOnGroups = {"group2", "group3"})
Konfiguracja Grup TestNG i podstawowy przykład
Grupy można skonfigurować w Suite
i / lub w elemencie Test
testng.xml
. Wszystkie grupy oznaczone jako zawarte w tesng.xml
zostaną wzięte pod uwagę do wykonania, z wyłączeniem jednej zostanie zignorowane. Jeśli metoda @Test
ma wiele grup i z tych grup, jeśli w testng.xml
są wykluczone pojedyncze grupy, metoda @Test
nie będzie działać.
Poniżej znajduje się typowa konfiguracja testng.xml
na poziomie Test
dla uruchomionych grup:
<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>
I tak będzie wyglądać klasa testowa:
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
}
}
Po uruchomieniu tej klasy
GroupTest
TestNG
zostanie wykonany tylkotestMethod3()
.
Wyjaśnienie:
-
<include name="functest" />
wszystkie metodyfunctest
grupyfunctest
kwalifikują się do uruchomienia, jeśli nie zostaną wykluczone przez żadną inną grupę. -
<exclude name="regtest" />
żadne metodyregtest
grupyregtest
nie kwalifikują się do uruchomienia. -
testMethod1()
itestMethod2()
są w grupieregtest
, więc nie będą działać. -
testMethod3()
znajduje się w grupieregtest
, więc będzie działać.
TestNG MetaGroups - Grupy grup
TestNG pozwala definiować grupy, które mogą obejmować inne grupy. MetaGrupy logicznie łączą jedną lub więcej grup i kontrolują wykonywanie metod @Test
należących do tych grup.
W poniższym przykładzie istnieją różne metody @Test
należące do różnych grup. Niewiele jest specyficznych dla konkretnego stosu, a niewielu to testy regresji i akceptacji. Tutaj można tworzyć MetaGrupy. Wybierzmy dowolne dwie proste MetaGrupy :
-
allstack
- obejmuje zarówno grupyliux.jboss.oracle
jak iaix.was.db2
i umożliwia jednoczesne działanie wszystkich metod testowych należących do dowolnej z tych grup. -
systemtest
- obejmuje grupyallstack
,regression
iacceptance
oraz umożliwia jednoczesne działanie wszystkich metod testowych należących do jednej z tych grup.
konfiguracja 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>
Klasa 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
}
}