我使用了以下代码:-
public class Class5 {
@Test
public void method24() {
System.out.println("Class 5- Test Method 1");
}
@Test
public void method89() {
System.out.println("Class 5- Test Method 2");
}
@BeforeMethod
public void method25() {
System.out.println("Class 5- BeforeMethod 1");
}
@BeforeMethod
public void method26() {
System.out.println("Class 5- BeforeMethod 2");
}
@AfterMethod
public void method28() {
System.out.println("Class 5- AfterMethod 1");
}
@AfterMethod
public void method27() {
System.out.println("Class 5- AfterMethod 2");
}
}
获得以下输出:-
[RemoteTestNG] detected TestNG version 6.13.1
Class 5- BeforeMethod 1
Class 5- BeforeMethod 2
Class 5- Test Method 2
Class 5- AfterMethod 2
Class 5- AfterMethod 1
PASSED: method89
===============================================
Default test
Tests run: 1, Failures: 0, Skips: 0
===============================================
在这里,我期望两个@Test方法都应执行。 有人可以解释一下它在这里如何工作吗?
同样,当我将public void method89()
设为public void method10()
之类的内容时(按字母顺序放在顶部),在这种情况下,两个@Test都会被执行,这是正确的行为。
答案 0 :(得分:0)
@Test
应该用于测试方法。现在,@BeforeMethod
将在每个@Test
方法之前运行。
与@AfterMethod
相同,后者将在每个@Test
之后运行。
您可以将代码修改为:
public class Class5 {
@BeforeMethod
public void method25() {
System.out.println("Class 5- BeforeMethod 1");
}
@Test
public void method24() {
System.out.println("Class 5- Test Method 1");
}
@Test
public void method89() {
System.out.println("Class 5- Test Method 2");
}
@AfterMethod
public void method28() {
System.out.println("Class 5- AfterMethod 1");
}
}
控制台输出为:
Class 5- BeforeMethod 1
Class 5- Test Method 1
Class 5- AfterMethod 1
Class 5- BeforeMethod 1
Class 5- Test Method 2
Class 5- AfterMethod 1
PASSED: method24
PASSED: method89