我在testNG测试中发现问题,测试如下。
public class testNG {
@BeforeGroups(groups = {"smoketests", "functionaltests"})
public void before() {
System.out.println("Before Groups");
}
@Test(groups = {"smoketests", "functionaltests"})
public void test() {
System.out.println("Test");
}
@AfterGroups(groups = {"smoketests", "functionaltests"})
public void after() {
System.out.println("After Groups");
}
}
当我通过
从testNG命令行运行测试时java -cp:libs / * org.testng.TestNG -testjar libs / testNGLib.jar -groups smoketests
(假设测试jar在某些libs文件夹中)
我得到的输出如下
Before Groups
Before Groups
Test
After Groups
我不确定为什么BeforeGroups被调用两次,即使我只对运行冒险测试组的测试感兴趣。
如果我在@Test指令中只有smoketests组,那么问题就不会发生,但我仍然不理解@BeforeGroups有多个组的问题。
答案 0 :(得分:0)
运行测试套件时遇到同样的问题。
<suite name="Test Suite">
<test name="GroupTest">
<groups>
<run>
<include name="sanity"/>
</run>
</groups>
<classes>
<class name="SampleTest"/>
</classes>
</test>
</suite>
以下是测试类:
public class SampleTest {
@BeforeGroups(groups = {"sanity","regression"})
void beforeGroup(){
System.out.println("Before Group");
}
@AfterGroups(groups = {"sanity","regression"})
void afterGroups(){
System.out.println("After Groups");
}
@Test(groups = {"sanity"})
void m1(){
System.out.println("m1");
}
@Test(groups = {"sanity","regression"})
void m3(){
System.out.println("m3");
}
@Test(groups = {"sanity"})
void m4(){
System.out.println("m4");
}
@Test(groups = {"regression"})
void m5(){
System.out.println("m5");
}
@Test
void m6(){
System.out.println(Sample.class.getName());
}
}
因此,当我运行testng.xml时,得到以下结果:
Before Group
m1
m2
Before Group
m3
After Groups
m4
After Groups
以下是我将群组名称更改为回归的结果。
Before Group
m3
After Groups
m5
After Groups
@BefroreGroups和@Aftergroups将同时执行两个组条目。使用TestNG 6.11版本。
答案 1 :(得分:0)
尝试使用
@BeforeSuite(alwaysRun = true)
而不是@BeforeGroups(groups = {"smoketests", "functionaltests"})
@AfterSuite(alwaysRun = true)
而不是@AfterGroups(groups = {"smoketests", "functionaltests"})