blob: 30787d438a9862aa8d567c55ea6166638a6e6695 [file] [log] [blame]
package test.hook;
import org.testng.Assert;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
import test.BaseTest;
/**
* Because IHookable and IConfigurable are global, it's safer to run them in a
* sub-TestNG object, otherwise they will be run for your entire test suite...
*
* @author cbeust
*/
public class HookableTest extends BaseTest {
@BeforeMethod
public void bm() {
HookSuccessTest.m_hook = false;
HookSuccessTest.m_testWasRun = false;
HookSuccessTest.m_parameter = null;
HookSuccess599Test.m_hook = false;
HookSuccess599Test.m_testWasRun = false;
HookSuccess599Test.m_parameter = null;
HookFailureTest.m_hook = false;
HookFailureTest.m_testWasRun = false;
HookListener.m_hook = false;
BaseConfigurable.m_hookCount = 0;
BaseConfigurable.m_bc = false;
BaseConfigurable.m_bm = false;
BaseConfigurable.m_bs = false;
BaseConfigurable.m_bt = false;
BaseConfigurable.m_methodName = null;
ConfigurableListener.m_hookCount = 0;
ConfigurableListener.m_methodName = null;
ConfigurableSuccessWithListenerTest.m_bc = false;
ConfigurableSuccessWithListenerTest.m_bm = false;
}
@Test
public void hookSuccess() {
addClass(HookSuccessTest.class);
run();
verifyTests("Passed", new String[] { "verify" }, getPassedTests());
Assert.assertTrue(HookSuccessTest.m_hook);
Assert.assertTrue(HookSuccessTest.m_testWasRun);
Assert.assertEquals(HookSuccessTest.m_parameter, "foo");
}
@Test(description = "https://github.com/cbeust/testng/issues/599")
public void issue599() {
addClass(HookSuccess599Test.class);
run();
verifyTests("Passed", new String[] { "verify" }, getPassedTests());
Assert.assertTrue(HookSuccess599Test.m_hook);
Assert.assertTrue(HookSuccess599Test.m_testWasRun);
Assert.assertEquals(HookSuccess599Test.m_parameter, "foo");
}
@Test(description = "https://github.com/cbeust/testng/pull/862")
public void issue862() {
addClass(HookSuccess862Test.class);
run();
verifyTests("Passed", new String[] { "verify" }, getPassedTests());
}
@Test
public void hookSuccessWithListener() {
addClass(HookSuccessWithListenerTest.class);
run();
verifyTests("Passed", new String[] { "verify" }, getPassedTests());
Assert.assertTrue(HookListener.m_hook);
}
@Test
public void hookFailure() {
addClass(HookFailureTest.class);
run();
// To investigate: TestNG still thinks the test passed since it can't know whether
// the hook ended up invoking the test or not.
// verifyTests("Passed", new String[] { }, getPassedTests());
Assert.assertTrue(HookFailureTest.m_hook);
Assert.assertFalse(HookFailureTest.m_testWasRun);
}
@Test
public void configurableSuccess() {
addClass(ConfigurableSuccessTest.class);
run();
Assert.assertEquals(BaseConfigurable.m_hookCount, 4);
Assert.assertTrue(BaseConfigurable.m_bc);
Assert.assertTrue(BaseConfigurable.m_bm);
Assert.assertTrue(BaseConfigurable.m_bs);
Assert.assertTrue(BaseConfigurable.m_bt);
Assert.assertEquals(BaseConfigurable.m_methodName, "hookWasRun");
}
@Test
public void configurableSuccessWithListener() {
addClass(ConfigurableSuccessWithListenerTest.class);
run();
Assert.assertEquals(ConfigurableListener.m_hookCount, 4);
Assert.assertTrue(ConfigurableSuccessWithListenerTest.m_bs);
Assert.assertTrue(ConfigurableSuccessWithListenerTest.m_bt);
Assert.assertTrue(ConfigurableSuccessWithListenerTest.m_bc);
Assert.assertTrue(ConfigurableSuccessWithListenerTest.m_bm);
Assert.assertEquals(ConfigurableListener.m_methodName, "hookWasRun");
}
@Test
public void configurableFailure() {
addClass(ConfigurableFailureTest.class);
run();
Assert.assertEquals(BaseConfigurable.m_hookCount, 4);
Assert.assertFalse(BaseConfigurable.m_bc);
Assert.assertFalse(BaseConfigurable.m_bm);
Assert.assertFalse(BaseConfigurable.m_bs);
Assert.assertFalse(BaseConfigurable.m_bt);
}
}