我在玩TestNG,发现@AfterMethod & @BeforeMethod在我使用dataProvider时被调用了多次。在使用从dataProvider传递的所有参数执行@Test之后,是否可以仅调用一次方法?像'testPrimeNumberChecker'被dataProvider调用5次后,我们只能调用'tearDown'方法一次。TestNG @AfterMethod和DataProvider
import org.testng.Assert;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
public class ParamTestWithDataProvider1 {
private PrimeNumberChecker primeNumberChecker;
private static final Logger logger = Logger.getLogger(ParamTestWithDataProvider1.class);
@BeforeMethod
public void initialize() {
logger.info("Before Method Fired !! - ");
primeNumberChecker = new PrimeNumberChecker();
}
@@AfterMethod
public void tearDown() {
logger.info("After Method Fired !! ");
}
@DataProvider(name = "test1")
public static Object[][] primeNumbers() {
return new Object[][] { { 2, true }, { 6, false }, { 19, true },
{ 22, false }, { 23, true } };
}
@Test(dataProvider = "test1")
public void testPrimeNumberChecker(Integer inputNumber,
Boolean expectedResult) {
logger.info(inputNumber + " " + expectedResult);
Assert.assertEquals(expectedResult,
primeNumberChecker.validate(inputNumber));
}
}