当我尝试执行以下代码时,我对测试方法E和A的顺序感到困惑。
我的输出顺序是C-> D-> E-> A-> B
public class Example5
{
@Test
public void A()
{
System.out.println("A");
}
@Test(dependsOnGroups={"MM"})
public void B()
{
System.out.println("B");
}
@Test(groups={"MM"})
public void C()
{
System.out.println("C");
}
@Test(groups={"MM"})
public void D()
{
System.out.println("D");
}
@Test
public void E()
{
System.out.println("E");
}
}
从输出中,我可以看到测试方法C和D在B方法之前执行(我可以理解),但我不理解的是E和A方法的顺序。
请解释TestNG如何遵循此代码中的连续顺序
答案 0 :(得分:2)
<suite name="Suite-A">
<test name="test">
<classes >
<class name="stack1.LoginTest"></class>
<methods>
<include name="A" />
<include name="E" />
<include name="B" />
<include name="C" />
<include name="D" />
</methods>
</classes>
</test>
</suite>
使用此套件运行类中明确提到方法的位置。你可以看到输出为A > E > C > D > B
。
我想这就是你期待看到的。
如果要在代码中设置顺序,可以使用@Test( priority = 1 )
作为方法。将优先安排较低的优先事项。因此,例如-2将在1之前执行。
如果您想预先为多个班级订购,请在testng.xml套件中使用group-by-instances="true"
。
相关的Stackoverflow链接:
- Priority in TestNG with multiple classes
- Order of execution of tests in TestNG
- Run TestNG tests in random order
Cedric's博客:
http://beust.com/weblog/2008/03/29/test-method-priorities-in-testng/