1.preserve-order属性,之前一直认为preserve-order属性是控制配置方法的执行顺序的,其实不是,preserve-order主要是控制test下节点classes执行顺序的
例如:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd"> <suite name="framework_testng"> <test name="test" preserve-order="true"> <classes> <class name="com.demo.One"></class> <class name="com.demo.Two"></class> <class name="com.demo.Three"></class> </classes> </test> </suite>
以上将按照 类One Two Three的顺序执行
2.那么要控制方法的执行顺序,可以采取以下方式:
(1).使用priority控制,例如:
@Test(priority = 0)
public void test001() {
}
@Test(priority = 1)
public void test002() {
}
@Test(priority = 2)
public void test003() {
}
这样指定以后,将按照test001、test002、test003顺序执行。
(2).使用方法命名控制
执行顺序是按照方法名的字典序升序排序执行的,例如方法名命名为:A() B() C()
这样就会按照A B C的顺序进行执行
(3).通过include控制,例如:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="framework_testng">
<test name="test" preserve-order="true">
<classes>
<class name="com.demo.Yltest">
<methods >
<include name="z" />
<include name="c" />
<include name="d" />
<include name="e" />
<include name="f" />
<include name="g" />
<include name="h" />
</methods>
</class>
</classes>
</test>
</suite>
这样将按照 z c d e f g h的顺序执行