当我试图执行下面的代码时,我对测试方法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在这段代码中是如何遵循顺序的
<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之前执行。
如果你想保持多个类的顺序,在test .xml套件中使用group-by-instances="true"
。
相关Stackoverflow链接:
- 在多个类的TestNG中的优先级
- TestNG中测试的执行顺序
- 随机顺序运行TestNG测试
塞德里克的博客:
http://beust.com/weblog/2008/03/29/test-method-priorities-in-testng/TestNG文档:
http://testng.org/doc/documentation-main.html