package org.fluentlenium.adapter; import org.assertj.core.api.Assertions; import org.fluentlenium.core.FluentPage; import org.fluentlenium.core.annotation.Page; import org.fluentlenium.core.domain.FluentWebElement; import org.fluentlenium.core.proxy.LocatorProxies; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.runners.MockitoJUnitRunner; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.support.ByIdOrName; import java.util.function.Supplier; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.never; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @RunWith(MockitoJUnitRunner.class) public class IsolatedTestTest { private final Supplier<WebDriver> webDriverFactory = () -> mock(WebDriver.class); @Mock private WebElement element; @Mock private WebElement pageElement; private static class SomePage extends FluentPage { private FluentWebElement pageElement; } private class IsolatedTestSpy extends IsolatedTest { @Page private SomePage page; private FluentWebElement element; @Override public WebDriver newWebDriver() { WebDriver webDriver = webDriverFactory.get(); when(webDriver.findElement(new ByIdOrName("element"))).thenReturn(IsolatedTestTest.this.element); when(webDriver.findElement(new ByIdOrName("pageElement"))).thenReturn(pageElement); return webDriver; } public void testSomething() { Assertions.assertThat(LocatorProxies.getLocatorResult(element.now().getElement())) .isSameAs(IsolatedTestTest.this.element); Assertions.assertThat(LocatorProxies.getLocatorResult(page.pageElement.now().getElement())).isSameAs(pageElement); } } @Test public void testIsolated() { IsolatedTestSpy spy = spy(new IsolatedTestSpy()); spy.testSomething(); verify(spy.getDriver(), never()).quit(); spy.quit(); //verify(spy.getDriver()).quit(); } }