blob: 1a4b52d072aadbc02d1d3f25d501188aa055e3af [file] [log] [blame]
package test.invocationcount;
import org.testng.Assert;
import org.testng.TestNG;
import org.testng.annotations.Test;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
/**
* Test various combination of @BeforeMethod(firstTimeOnly = true/false) and
* @AfterMethod(lastTimeOnly = true/false) with invocation counts and data
* providers.
* @author cbeust@google.com
*
*/
public class FirstAndLastTimeTest {
@Test
public void verifyDataProviderFalseFalse() {
run(DataProviderFalseFalseTest.class, 3, 3);
}
@Test
public void verifyDataProviderTrueFalse() {
run(DataProviderTrueFalseTest.class, 1, 3);
}
@Test
public void verifyDataProviderFalseTrue() {
run(DataProviderFalseTrueTest.class, 3, 1);
}
@Test
public void verifyDataProviderTrueTrue() {
run(DataProviderTrueTrueTest.class, 1, 1);
}
@Test
public void verifyInvocationCountFalseFalse() {
run(InvocationCountFalseFalseTest.class, 3, 3);
}
@Test
public void verifyInvocationCountTrueFalse() {
run(InvocationCountTrueFalseTest.class, 1, 3);
}
@Test
public void verifyInvocationCountFalseTrue() {
run(InvocationCountFalseTrueTest.class, 3, 1);
}
@Test
public void verifyInvocationCountTrueTrue() {
run(InvocationCountTrueTrueTest.class, 1, 1);
}
private void run(Class cls, int expectedBefore, int expectedAfter) {
TestNG tng = new TestNG();
tng.setVerbose(0);
tng.setTestClasses(new Class[] { cls });
tng.run();
try {
Method before = cls.getMethod("getBeforeCount", new Class[0]);
Integer beforeCount = (Integer) before.invoke(null, (Object[]) null);
Assert.assertEquals(beforeCount.intValue(), expectedBefore);
Method after = cls.getMethod("getAfterCount", new Class[0]);
Integer afterCount = (Integer) after.invoke(null, (Object[]) null);
Assert.assertEquals(afterCount.intValue(), expectedAfter);
} catch (SecurityException e) {
e.printStackTrace();
} catch (NoSuchMethodException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
}
}