是否可以按特定顺序调用@AfterMethod方法? 我有一个示例代码:
public class PriorityTest {
@BeforeClass(alwaysRun = true)
public void setUp() throws Exception {
System.out.println("BeforeClass PriorityTest.java");
}
@Test
public void defaultPriority(){
System.out.println("default");
}
@Test (priority = 3)
public void t1(){
System.out.println("t1");
}
@Test (priority = 2)
public void t2(){
System.out.println("t2");
}
@Test (priority = 1)
public void t3(){
System.out.println("t3");
}
@Test (priority = -1)
public void t_1(){
System.out.println("t -1");
}
@AfterMethod
public void after2(){
System.out.println("after2");
}
@AfterMethod
public void after1(){
System.out.println("after1");
}
}
@Test的优先级完美无缺。我想对@AfterMethod做同样的事情,但是当我编写代码@AfterMethod (priority = 1)
时,它就是编译错误。当我没有优先权时,总是按字母顺序排列(只有方法名称很重要)。
这是输出:
BeforeClass PriorityTest.java
t -1
after1
after2
default
after1
after2
t3
after1
after2
t2
after1
after2
t1
after1
after2
是否有可能按特定顺序调用该方法(例如特殊参数或注释)?
PS。我知道我可以编写一个AfterMethod,然后按特定顺序调用方法,但我想到许多AfterMethod注释。
答案 0 :(得分:6)
@AfterMethod
不支持priority
参数。但它可以使用dependsOnMethods
和dependsOnGroups
代替。
<强> dependsOnMethods 强>
此方法所依赖的方法列表。无法保证所依赖的方法的运行顺序,但保证在运行包含此批注的测试方法之前运行所有这些方法。此外,如果这些方法中的任何一个不是SUCCESS,则不会运行此测试方法,并将其标记为SKIP。如果其中一些方法已经过载,则将运行所有重载版本。
<强> dependsOnGroups 强>
此方法所依赖的组列表。保证在此方法之前调用其中一个组的每个方法成员。此外,如果这些方法中的任何一个不是SUCCESS,则不会运行此测试方法,并将其标记为SKIP。
在您的情况下,dependsOnMethods
可以使用。
@AfterMethod
public void after2(){
System.out.println("after2");
}
@AfterMethod(dependsOnMethods = "after2")
public void after1(){
System.out.println("after1");
}
答案 1 :(得分:1)
尝试使用dependsOnMethods:
@AfterMethod(dependsOnMethods= { "after2" })
public void after1(){
System.out.println("after1");