gpt4 book ai didi

java - TestNG - @AfterMethod 的优先级

转载 作者:搜寻专家 更新时间:2023-11-01 01:41:16 25 4
gpt4 key购买 nike

是否可以按特定顺序调用@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
之后1
之后2
默认
之后1
之后2
t3
之后1
之后2
t2
之后1
之后2
t1
之后1
之后2

是否有可能以特定顺序调用该方法(例如特殊参数或注释)?

附言。我知道我可以编写一个 AfterMethod,然后按特定顺序调用方法,但我想到了很多 AfterMethod 注释。

最佳答案

@AfterMethod 不支持priority 参数。但它有 dependsOnMethodsdependsOnGroups 可以代替使用。

dependsOnMethods

The list of methods this method depends on. There is no guarantee on the order on which the methods depended upon will be run, but you are guaranteed that all these methods will be run before the test method that contains this annotation is run. Furthermore, if any of these methods was not a SUCCESS, this test method will not be run and will be flagged as a SKIP. If some of these methods have been overloaded, all the overloaded versions will be run.

dependsOnGroups

The list of groups this method depends on. Every method member of one of these groups is guaranteed to have been invoked before this method. Furthermore, if any of these methods was not a SUCCESS, this test method will not be run and will be flagged as a SKIP.

在您的情况下,可以使用 dependsOnMethods

@AfterMethod
public void after2(){
System.out.println("after2");
}
@AfterMethod(dependsOnMethods = "after2")
public void after1(){
System.out.println("after1");
}

关于java - TestNG - @AfterMethod 的优先级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36712711/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com