是否可以按特定顺序调用@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");
}
Run Code Online (Sandbox Code Playgroud)
}
@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注释.
@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");
}
Run Code Online (Sandbox Code Playgroud)