Sigo recibiendo NullPointerException para mi Oyente WebDriver. es esto debido a que utiliza ThreadLocal en mi WebDriver en la clase base? si es así ¿cómo puedo obtener los casos de prueba del controlador para mi oyente onTestSuccess método?
Esta es mi Clase de Escucha:
@Override
public void onTestSuccess(ITestResult result) {
extentTest.get().log(Status.PASS,"Test Passed");
WebDriver driver = null;
Object testObject = result.getInstance();
Class clazz = result.getTestClass().getRealClass();
try {
driver = (WebDriver)clazz.getField("webdriver").get(testObject);
} catch (Exception e) {
}
try {
extentTest.get().addScreenCaptureFromPath(getScreenShotPath(result.getMethod().getMethodName(), driver), result.getMethod().getMethodName());
} catch (IOException e) {
e.printStackTrace();
}
}
BaseClass:
public ThreadLocal<WebDriver> webdriver = new ThreadLocal<WebDriver>();
@BeforeClass
public void setup() {
Reporter.log("@@@@@ Setup @@@@@",true);
ExtentReports extent = ExtentReport.extentReportGenerator();
}
@BeforeMethod
public void startBrowser() {
WebDriverFactory webDriverFactory = new WebDriverFactory();
webDriverFactory.setDriver();
webdriver.set(webDriverFactory.getDriver());
webdriver.get().get(baseURL);
La Prueba De La Clase:
@Test(dataProvider = "jsonData", dataProviderClass = TestData.class)
public void testAggregator(String jSon) throws ParseException {
extent.createTest("Test The Welcome Page");
welcomePageImpl = new WelcomePageImpl(webdriver.get());
welcomePageImpl.getAggregatorRequest(webdriver.get(),jSon);
}
Excepción:
java.lang.NullPointerException
at main.java.com.shoppingCart.testCases.BaseClass.getScreenShotPath(BaseClass.java:71)
at main.java.com.shoppingCart.utilities.Listeners.onTestSuccess(Listeners.java:37)
at org.testng.internal.TestListenerHelper.runTestListeners(TestListenerHelper.java:70)
at org.testng.internal.TestInvoker.runTestResultListener(TestInvoker.java:219)
at org.testng.internal.TestInvoker.invokeMethod(TestInvoker.java:651)
at org.testng.internal.TestInvoker.invokeTestMethod(TestInvoker.java:173)
at org.testng.internal.MethodRunner.runInSequence(MethodRunner.java:46)
at org.testng.internal.TestInvoker$MethodInvocationAgent.invoke(TestInvoker.java:816)
at org.testng.internal.TestInvoker.invokeTestMethods(TestInvoker.java:146)
at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:146)
at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:128)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)