为何同一方法添加多个TestNG注解时@AfterSuite会重复执行?
同一个方法加多个TestNG注解导致重复执行的原因及解决方法
当你把多个TestNG生命周期注解标注在同一个方法上时,每个注解都会独立触发该方法的执行——TestNG会在每个注解对应的生命周期阶段,都调用一次这个方法,这就是你看到"After suite"多次打印的原因。
你给afterSuite()方法加了9个TestNG注解:@BeforeSuite、@BeforeTest、@BeforeClass、@BeforeMethod、@Test、@AfterMethod、@AfterClass、@AfterTest、@AfterSuite,所以TestNG会在这9个生命周期节点分别执行一次该方法,对应输出9次"After suite"。
正确查看TestNG执行顺序的做法
要准确观察TestNG的生命周期执行顺序,应该为每个注解单独分配一个方法,每个方法输出对应阶段的标识,示例代码如下:
public class ChronologicalOrder { @BeforeSuite public void beforeSuite() { System.out.println("Before suite"); } @BeforeTest public void beforeTest() { System.out.println("Before test"); } @BeforeClass public void beforeClass() { System.out.println("Before class"); } @BeforeMethod public void beforeMethod() { System.out.println("Before method"); } @Test public void testMethod() { System.out.println("Test method"); } @AfterMethod public void afterMethod() { System.out.println("After method"); } @AfterClass public void afterClass() { System.out.println("After class"); } @AfterTest public void afterTest() { System.out.println("After test"); } @AfterSuite public void afterSuite() { System.out.println("After suite"); } }
运行这个类后,你会看到符合TestNG标准生命周期的输出顺序:
Before suite
Before test
Before class
Before method
Test method
After method
After class
After test
After suite
这样就能清晰看到每个注解对应的执行时机和顺序了。
内容的提问来源于stack exchange,提问作者Dietzsche Nostoevsky
相关产品推荐
相关产品推荐

