1 package test.hook; 2 3 import org.testng.Assert; 4 import org.testng.annotations.BeforeMethod; 5 import org.testng.annotations.Test; 6 7 import test.BaseTest; 8 9 /** 10 * Because IHookable and IConfigurable are global, it's safer to run them in a 11 * sub-TestNG object, otherwise they will be run for your entire test suite... 12 * 13 * @author cbeust 14 */ 15 public class HookableTest extends BaseTest { 16 17 @BeforeMethod bm()18 public void bm() { 19 HookSuccessTest.m_hook = false; 20 HookSuccessTest.m_testWasRun = false; 21 HookSuccessTest.m_parameter = null; 22 HookSuccess599Test.m_hook = false; 23 HookSuccess599Test.m_testWasRun = false; 24 HookSuccess599Test.m_parameter = null; 25 HookFailureTest.m_hook = false; 26 HookFailureTest.m_testWasRun = false; 27 HookListener.m_hook = false; 28 BaseConfigurable.m_hookCount = 0; 29 BaseConfigurable.m_bc = false; 30 BaseConfigurable.m_bm = false; 31 BaseConfigurable.m_bs = false; 32 BaseConfigurable.m_bt = false; 33 BaseConfigurable.m_methodName = null; 34 ConfigurableListener.m_hookCount = 0; 35 ConfigurableListener.m_methodName = null; 36 ConfigurableSuccessWithListenerTest.m_bc = false; 37 ConfigurableSuccessWithListenerTest.m_bm = false; 38 } 39 40 @Test hookSuccess()41 public void hookSuccess() { 42 addClass(HookSuccessTest.class); 43 run(); 44 45 verifyTests("Passed", new String[] { "verify" }, getPassedTests()); 46 Assert.assertTrue(HookSuccessTest.m_hook); 47 Assert.assertTrue(HookSuccessTest.m_testWasRun); 48 Assert.assertEquals(HookSuccessTest.m_parameter, "foo"); 49 } 50 51 @Test(description = "https://github.com/cbeust/testng/issues/599") issue599()52 public void issue599() { 53 addClass(HookSuccess599Test.class); 54 run(); 55 56 verifyTests("Passed", new String[] { "verify" }, getPassedTests()); 57 Assert.assertTrue(HookSuccess599Test.m_hook); 58 Assert.assertTrue(HookSuccess599Test.m_testWasRun); 59 Assert.assertEquals(HookSuccess599Test.m_parameter, "foo"); 60 } 61 62 @Test(description = "https://github.com/cbeust/testng/pull/862") issue862()63 public void issue862() { 64 addClass(HookSuccess862Test.class); 65 run(); 66 67 verifyTests("Passed", new String[] { "verify" }, getPassedTests()); 68 } 69 70 @Test hookSuccessWithListener()71 public void hookSuccessWithListener() { 72 addClass(HookSuccessWithListenerTest.class); 73 run(); 74 75 verifyTests("Passed", new String[] { "verify" }, getPassedTests()); 76 Assert.assertTrue(HookListener.m_hook); 77 } 78 79 @Test hookFailure()80 public void hookFailure() { 81 addClass(HookFailureTest.class); 82 run(); 83 84 // To investigate: TestNG still thinks the test passed since it can't know whether 85 // the hook ended up invoking the test or not. 86 // verifyTests("Passed", new String[] { }, getPassedTests()); 87 Assert.assertTrue(HookFailureTest.m_hook); 88 Assert.assertFalse(HookFailureTest.m_testWasRun); 89 } 90 91 @Test configurableSuccess()92 public void configurableSuccess() { 93 addClass(ConfigurableSuccessTest.class); 94 run(); 95 96 Assert.assertEquals(BaseConfigurable.m_hookCount, 4); 97 Assert.assertTrue(BaseConfigurable.m_bc); 98 Assert.assertTrue(BaseConfigurable.m_bm); 99 Assert.assertTrue(BaseConfigurable.m_bs); 100 Assert.assertTrue(BaseConfigurable.m_bt); 101 Assert.assertEquals(BaseConfigurable.m_methodName, "hookWasRun"); 102 } 103 104 @Test configurableSuccessWithListener()105 public void configurableSuccessWithListener() { 106 addClass(ConfigurableSuccessWithListenerTest.class); 107 run(); 108 109 Assert.assertEquals(ConfigurableListener.m_hookCount, 4); 110 Assert.assertTrue(ConfigurableSuccessWithListenerTest.m_bs); 111 Assert.assertTrue(ConfigurableSuccessWithListenerTest.m_bt); 112 Assert.assertTrue(ConfigurableSuccessWithListenerTest.m_bc); 113 Assert.assertTrue(ConfigurableSuccessWithListenerTest.m_bm); 114 Assert.assertEquals(ConfigurableListener.m_methodName, "hookWasRun"); 115 } 116 117 @Test configurableFailure()118 public void configurableFailure() { 119 addClass(ConfigurableFailureTest.class); 120 run(); 121 122 Assert.assertEquals(BaseConfigurable.m_hookCount, 4); 123 Assert.assertFalse(BaseConfigurable.m_bc); 124 Assert.assertFalse(BaseConfigurable.m_bm); 125 Assert.assertFalse(BaseConfigurable.m_bs); 126 Assert.assertFalse(BaseConfigurable.m_bt); 127 } 128 129 } 130