| 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(); |
| } |
| } |
| |
| } |