Je reçois des NullPointerException pour mon Auditeur WebDriver. est-ce parce que j'ai utilisé ThreadLocal sur mon WebDriver dans la classe de base? si oui, comment puis-je obtenir les cas de test du pilote pour mon auditeur onTestSuccess méthode?
C'est ma Classe Écouteur:
@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);
Cas De Test De La Classe:
@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);
}
Exception:
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)