• Home
  • History
  • Annotate
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1  package test.invokedmethodlistener;
2  
3  import org.testng.Assert;
4  import org.testng.IInvokedMethod;
5  import org.testng.IInvokedMethodListener;
6  import org.testng.ITestResult;
7  import org.testng.TestNG;
8  import org.testng.annotations.Test;
9  import org.testng.xml.XmlSuite;
10  
11  import test.SimpleBaseTest;
12  
13  import java.util.List;
14  
15  public class InvokedMethodListenerTest extends SimpleBaseTest {
16  
run(Class[] classes, IInvokedMethodListener l)17    private static void run(Class[] classes, IInvokedMethodListener l) {
18      TestNG tng = create();
19      tng.setTestClasses(classes);
20  
21      tng.addInvokedMethodListener(l);
22      tng.run();
23    }
24  
assertMethodCount(MyListener l)25    private static void assertMethodCount(MyListener l) {
26      Assert.assertEquals(l.getBeforeCount(), 9);
27      Assert.assertEquals(l.getAfterCount(), 9);
28    }
29  
30    @Test
withSuccess()31    public void withSuccess() {
32      MyListener l = new MyListener();
33      run(new Class[]{Success.class}, l);
34      assertMethodCount(l);
35    }
36  
37    @Test
withFailure()38    public void withFailure() {
39      MyListener l = new MyListener();
40      run(new Class[] { Failure.class }, l);
41      assertMethodCount(l);
42      Assert.assertEquals(l.getSuiteStatus(), ITestResult.FAILURE);
43      Assert.assertTrue(null != l.getSuiteThrowable());
44      Assert.assertTrue(l.getSuiteThrowable().getClass() == RuntimeException.class);
45  
46      Assert.assertEquals(l.getMethodStatus(), ITestResult.FAILURE);
47      Assert.assertTrue(null != l.getMethodThrowable());
48      Assert.assertTrue(l.getMethodThrowable().getClass() == IllegalArgumentException.class);
49    }
50  
51    /**
52     * Fix for:
53     * https://github.com/juherr/testng-googlecode/issues/7
54     * https://github.com/juherr/testng-googlecode/issues/86
55     * https://github.com/cbeust/testng/issues/93
56     */
57    @Test
sameMethodInvokedMultipleTimesShouldHaveDifferentTimeStamps()58    public void sameMethodInvokedMultipleTimesShouldHaveDifferentTimeStamps() {
59      TestNG tng = create(Sample.class);
60      InvokedMethodListener listener = new InvokedMethodListener();
61      tng.addListener(listener);
62      tng.run();
63      List<IInvokedMethod> m = listener.getInvokedMethods();
64      IInvokedMethod beforeSuite = m.get(0);
65      Assert.assertFalse(beforeSuite.getTestMethod().isAfterMethodConfiguration());
66      Assert.assertTrue(beforeSuite.isConfigurationMethod());
67      IInvokedMethod after1 = m.get(2);
68      Assert.assertTrue(after1.getTestMethod().isAfterMethodConfiguration());
69      Assert.assertTrue(after1.isConfigurationMethod());
70      IInvokedMethod after2 = m.get(4);
71      Assert.assertTrue(after2.getTestMethod().isAfterMethodConfiguration());
72      Assert.assertTrue(after2.isConfigurationMethod());
73      Assert.assertTrue(after1.getDate() != after2.getDate());
74    }
75  
76    @Test(description = "Test methods with expected exceptions should show up as pass" +
77    		" in IInvokedMethodListener's afterInvocation method")
testMethodsWithExpectedExceptionsShouldShowUpAsPass()78    public void testMethodsWithExpectedExceptionsShouldShowUpAsPass() {
79      TestNG tng = create(Sample2.class);
80      Sample2.Sample2InvokedMethodListener l = new Sample2().new Sample2InvokedMethodListener();
81      tng.addListener(l);
82      tng.run();
83  
84      Assert.assertTrue(l.isSuccess);
85    }
86  
87    @Test(description = "Invoked method does not recognize configuration method")
issue629_InvokedMethodDoesNotRecognizeConfigurationMethod()88    public void issue629_InvokedMethodDoesNotRecognizeConfigurationMethod() {
89      InvokedMethodNameListener l = new InvokedMethodNameListener();
90      run(new Class[]{Success.class}, l);
91  
92      Assert.assertEquals(l.testMethods.size(), 1);
93      Assert.assertTrue(l.testMethods.contains("a"));
94  
95      Assert.assertEquals(l.testMethodsFromTM.size(), 1);
96      Assert.assertTrue(l.testMethodsFromTM.contains("a"));
97  
98      Assert.assertEquals(l.configurationMethods.size(), 8);
99      Assert.assertTrue(l.configurationMethods.contains("beforeMethod"));
100      Assert.assertTrue(l.configurationMethods.contains("afterMethod"));
101      Assert.assertTrue(l.configurationMethods.contains("beforeTest"));
102      Assert.assertTrue(l.configurationMethods.contains("afterTest"));
103      Assert.assertTrue(l.configurationMethods.contains("beforeClass"));
104      Assert.assertTrue(l.configurationMethods.contains("afterClass"));
105      Assert.assertTrue(l.configurationMethods.contains("beforeSuite"));
106      Assert.assertTrue(l.configurationMethods.contains("afterSuite"));
107  
108      Assert.assertEquals(l.configurationMethodsFromTM.size(), 8);
109      Assert.assertTrue(l.configurationMethodsFromTM.contains("beforeMethod"));
110      Assert.assertTrue(l.configurationMethodsFromTM.contains("afterMethod"));
111      Assert.assertTrue(l.configurationMethodsFromTM.contains("beforeTest"));
112      Assert.assertTrue(l.configurationMethodsFromTM.contains("afterTest"));
113      Assert.assertTrue(l.configurationMethodsFromTM.contains("beforeClass"));
114      Assert.assertTrue(l.configurationMethodsFromTM.contains("afterClass"));
115      Assert.assertTrue(l.configurationMethodsFromTM.contains("beforeSuite"));
116      Assert.assertTrue(l.configurationMethodsFromTM.contains("afterSuite"));
117    }
118  
119    @Test
issue87_method_orderning_with_disable_test_class()120    public void issue87_method_orderning_with_disable_test_class() {
121      assertIssue87(A.class, B.class, C.class);
122      assertIssue87(A.class, C.class, B.class);
123      assertIssue87(B.class, A.class, C.class);
124    }
125  
assertIssue87(Class<?>.... tests)126    private void assertIssue87(Class<?>... tests) {
127      TestNG tng = create(tests);
128      tng.setParallel(XmlSuite.ParallelMode.FALSE);
129      tng.setPreserveOrder(true);
130      InvokedMethodListener listener = new InvokedMethodListener();
131      tng.addListener(listener);
132      tng.run();
133      List<IInvokedMethod> m = listener.getInvokedMethods();
134      Assert.assertEquals(m.get(0).getTestMethod().getMethodName(), "someMethod1");
135      Assert.assertEquals(m.get(1).getTestMethod().getMethodName(), "someMethod3");
136      Assert.assertEquals(m.get(2).getTestMethod().getMethodName(), "someTest");
137      Assert.assertEquals(m.size(), 3);
138    }
139  }
140