以前我使用的是testng 6.8.8版本,所有测试都按预期执行。但在几天之前我将testng版本更新为6.14.2 ,开始面对运行序列问题。我也尝试过优先级更改和所有事情,但它没有工作,因为它在testng 6.8.8中工作。有关详细信息,请参阅源代码。
class1.java
package TestNG;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
public class class1
{
@BeforeClass
public void beforeclass1()
{
System.out.println("before_class1");
}
@AfterClass
public void afterclass1()
{
System.out.println("after_class1");
}
@Test(priority = 0)
public void class1_method1()
{
System.out.println("class1_method1");
}
@Test(priority = 1)
public void class1_method2()
{
System.out.println("class1_method2");
}
@Test(priority = 2)
public void class1_method3()
{
System.out.println("class1_method3");
}
}
class2.java
package TestNG;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
public class class2
{
@BeforeClass
public void beforeclass1()
{
System.out.println("before_class2");
}
@AfterClass
public void afterclass1()
{
System.out.println("after_class2");
}
@Test(priority = 0)
public void class2_method1()
{
System.out.println("class2_method1");
}
@Test(priority = 1)
public void class2_method2()
{
System.out.println("class2_method2");
}
@Test(priority = 2)
public void class2_method3()
{
System.out.println("class2_method3");
}
}
class3.java
package TestNG;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
public class class3
{
@BeforeClass
public void beforeclass1()
{
System.out.println("before_class3");
}
@AfterClass
public void afterclass1()
{
System.out.println("after_class3");
}
@Test(priority = 0)
public void class3_method1()
{
System.out.println("class3_method1");
}
@Test(priority = 1)
public void class3_method2()
{
System.out.println("class3_method2");
}
@Test(priority = 2)
public void class3_method3()
{
System.out.println("class3_method3");
}
}
的testng.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite">
<test name="Test" >
<classes>
<class name="TestNG.class1">
<methods>
<include name="class1_method1"/>
<include name="class1_method2"/>
<include name="class1_method3"/>
<include name="beforeclass1"></include>
<include name="after_class1"></include>
</methods>
</class>
<class name="TestNG.class2">
<methods>
<include name="class2_method1"/>
<include name="class2_method2"/>
<include name="class2_method3"/>
<include name="beforeclass2"></include>
<include name="after_class2"></include>
</methods>
</class>
<class name="TestNG.class3">
<methods>
<include name="class3_method1"/>
<include name="class3_method2"/>
<include name="class3_method3"/>
<include name="beforeclass3"></include>
<include name="after_class3"></include>
</methods>
</class>
</classes>
</test> <!-- Test -->
</suite> <!-- Suite -->
使用testng(6.14.2)运行testng.xml后的实际输出:
before_class1
class1_method1
before_class2
class2_method1
before_class3
class3_method1
class1_method2
class2_method2
class3_method2
class1_method3
after_class1
class2_method3
after_class2
class3_method3
after_class3
预期输出:(使用testng 6.8.8但在testng 6.14.2中无法正常工作)
before_class1
class1_method1
class1_method2
class1_method3
after_class1
before_class2
class2_method1
class2_method2
class2_method3
after_class2
before_class3
class3_method1
class3_method2
class3_method3
after_class3
答案 0 :(得分:0)
此设置将一直有效至6.9.10,此后测试标记的优先级为全局。
使用dependsOnMethods or depednsOnGroups
首先在课程中按顺序运行。如果要在依赖它的方法失败时运行该方法,则需要使用alwaysRun = true
。
您也可以尝试将类拆分为不同的测试标记。
还不确定是否需要在methods标签中提及before和after方法。