package org.fluentlenium.adapter.testng.integration; import org.fluentlenium.adapter.testng.FluentTestNg; import org.mockito.Mockito; import org.openqa.selenium.WebDriver; import org.openqa.selenium.htmlunit.HtmlUnitDriver; import org.testng.Assert; import org.testng.ITestResult; import org.testng.TestListenerAdapter; import org.testng.TestNG; import org.testng.annotations.Test; public class DontRunTestsWhenInitFailTest { private static class TestClass extends FluentTestNg { TestClass() { getConfiguration().setScreenshotMode(TriggerMode.AUTOMATIC_ON_FAIL); getConfiguration().setHtmlDumpMode(TriggerMode.AUTOMATIC_ON_FAIL); } @Override public WebDriver newWebDriver() { HtmlUnitDriver driver = new HtmlUnitDriver(false); driver.get("invalid:url"); // Simulate a driver initialization failure. return driver; } @Test public void testDriverFailShouldNotCallTestMethod() { Assert.fail("Should not be called"); } } @Test public void testRun() { TestNG testNG = new TestNG(false); testNG.setTestClasses(new Class[] {TestClass.class}); TestListenerAdapter listenerAdapter = Mockito.mock(TestListenerAdapter.class); testNG.addListener(listenerAdapter); testNG.run(); Mockito.verify(listenerAdapter).onConfigurationFailure(Mockito.any(ITestResult.class)); Mockito.verify(listenerAdapter).onTestSkipped(Mockito.any(ITestResult.class)); Mockito.verify(listenerAdapter, Mockito.never()).onTestSuccess(Mockito.any(ITestResult.class)); } }