Testng - 如何在为所有数据提供程序运行测试方法后运行清理代码?



我有一个testng测试(如下(,其中我对数据提供者"junkDP"给出的每个数组使用"totalAmount"的一个值。我想重置"总金额",只有在"test"方法为"junkDP"中的每个数组运行之后。这在测试中可能吗?怎么办?

请注意,@AfterMethod和@AfterTest不会做我想做的事。 @AfterMethod在"junkDP"中第一个数组之后为每个数组运行"test"方法之前重置"totalAmount"。 @AfterTest在@AfterClass之后运行。

代码:

import org.testng.annotations.DataProvider;
import org.testng.annotations.*;
public class JUNKdP {
@DataProvider( name = "junkDP")
public static Object[][] junkDP() {
Object [] [] dataSet = new Object[][] {
new Object[] {1, 2},
new Object[] {3, 4},
new Object[] {5, 6}};
return dataSet;
}
}

public class JUNK {
private int totalAmount = 0;
@BeforeClass
public void beforeClass(){System.out.println("BeforeClassn");}
@BeforeMethod
public void beforeMethod(){
System.out.println("BeforeMethodn");
}
@AfterMethod
public void afterMethod(){
System.out.println("AfterMethodn");
}
@AfterTest
public void afterTest(){
System.out.println("AfterTestn");
this.totalAmount = 0;
System.out.println("Reset total amount to 0");
}
@AfterClass
public void afterClass(){System.out.println("AfterClassn");}
@Test(dataProvider = "junkDP", dataProviderClass = JUNKdP.class, enabled = true)
public void test(int a, int b){
System.out.println("Test method");
int sum = a + b;
System.out.println("Sum: " + sum);
this.totalAmount = this.totalAmount + sum;
System.out.println("totalAmount: " + this.totalAmount + "n");
}
}

输出:

BeforeClass
BeforeMethod
Test method
Sum: 3
totalAmount: 3
AfterMethod
BeforeMethod
Test method
Sum: 7
totalAmount: 10
AfterMethod
BeforeMethod
Test method
Sum: 11
totalAmount: 21
AfterMethod
AfterClass
AfterTest
Reset total amount to 0

如果我理解这个问题,您正在测试方法之后搜索执行器?

。如果是,具体取决于测试运行程序

你去吧,Testng是如何做到的:

http://testng.org/doc/documentation-main.html#annotations

@AfterTest或@AfterMethod

最新更新