'Runnable Jar File not running because coultnt read excel datas..but works fine in Eclipse
I am trying to create an executable jar file of a Maven Project in Eclipse.was using testNG in the maven project..so created a runner class with main method and exported runnable Jar File..Now it's not Running .. i feel it's not reading datas from Excel which i put into the project...
Java version enter image description here
Dependencies enter image description here
My RunnerClass with main Method code
@SuppressWarnings("deprecation")
static TestNG tng;
@SuppressWarnings("deprecation")
public static void main(String[] args) {
ExtentReportListener ext = new ExtentReportListener();
tng = new TestNG();
tng.setTestClasses(new Class[] {Login.class});
tng.addListener(ext);
tng.run();
}
The test class which i want to execute looks like:
@BeforeTest
public void setup() throws IOException {
initialization();
loginPage = new LoginPage();
homepage = new HomePage();
}
@Test(priority=1,groups = {"Regression","UnitTest"})
public void Titlecheck() {
String title = driver.getTitle();
System.out.println(title);
Assert.assertEquals(title, "Login pagina");
}
@Test(priority=2,enabled=true)
public void login() throws InterruptedException, IOException {
loginPage.ClearUsPwd();
loginPage.LoginPageTest(getData("Logindata", 1, 1),getData("Logindata", 1, 2));
}
The Initialization method and getData method are in baseclass
public static void initialization() throws IOException {
WebDriverManager.chromedriver().setup();
driver = new ChromeDriver();
driver.get(getData("login", 0, 1 ));
driver.manage().window().maximize();
}
public static String getData(String sheetName ,int rowNo, int cellNo) throws IOException {
File f = new File("./resources/excelData/Sample.xlsx");
FileInputStream fis = new FileInputStream(f);
XSSFWorkbook w = new XSSFWorkbook(fis);
XSSFSheet sheet = w.getSheet(sheetName);
Row r = sheet.getRow(rowNo);
Cell c =r.getCell(cellNo ,Row.MissingCellPolicy.CREATE_NULL_AS_BLANK);
String value = c.getStringCellValue();
return value; }
While running it in cmd The exception i get below
Test Suite started! Titlecheck skipped! java.lang.NullPointerException at base.Testbase.getScreenshot(Testbase.java:107) at extentReport.ExtentReportListener.onTestSkipped(ExtentReportListener.java:121) at org.testng.internal.Invoker.runTestListeners(Invoker.java:1723) at org.testng.internal.Invoker.runTestListeners(Invoker.java:1714) at org.testng.internal.Invoker.registerSkippedTestResult(Invoker.java:1272) at org.testng.internal.Invoker.invokeMethod(Invoker.java:605) at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:869) at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1193) at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:126) at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:109) at org.testng.TestRunner.privateRun(TestRunner.java:744) at org.testng.TestRunner.run(TestRunner.java:602) at org.testng.SuiteRunner.runTest(SuiteRunner.java:380) at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:375) at org.testng.SuiteRunner.privateRun(SuiteRunner.java:340) at org.testng.SuiteRunner.run(SuiteRunner.java:289) at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52) at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86) at org.testng.TestNG.runSuitesSequentially(TestNG.java:1301) at org.testng.TestNG.runSuitesLocally(TestNG.java:1226) at org.testng.TestNG.runSuites(TestNG.java:1144) at org.testng.TestNG.run(TestNG.java:1115) at testScenarios.RunnerClass.main(RunnerClass.java:21) login skipped! java.lang.NullPointerException at base.Testbase.getScreenshot(Testbase.java:107) at extentReport.ExtentReportListener.onTestSkipped(ExtentReportListener.java:121) at org.testng.internal.Invoker.runTestListeners(Invoker.java:1723) at org.testng.internal.Invoker.runTestListeners(Invoker.java:1714) at org.testng.internal.Invoker.registerSkippedTestResult(Invoker.java:1272) at org.testng.internal.Invoker.invokeMethod(Invoker.java:605) at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:869) at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1193) at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:126) at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:109) at org.testng.TestRunner.privateRun(TestRunner.java:744) at org.testng.TestRunner.run(TestRunner.java:602) at org.testng.SuiteRunner.runTest(SuiteRunner.java:380) at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:375) at org.testng.SuiteRunner.privateRun(SuiteRunner.java:340) at org.testng.SuiteRunner.run(SuiteRunner.java:289) at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52) at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86) at org.testng.TestNG.runSuitesSequentially(TestNG.java:1301) at org.testng.TestNG.runSuitesLocally(TestNG.java:1226) at org.testng.TestNG.runSuites(TestNG.java:1144) at org.testng.TestNG.run(TestNG.java:1115) at testScenarios.RunnerClass.main(RunnerClass.java:21) Test Suite is ending!
=============================================== Command line suite Total tests run: 2, Failures: 0, Skips: 2 Configuration Failures: 1, Skips: 0
The NullPointerException thrown Line below
public String getScreenshot() { **106th Line**
File src = ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE);**107th Line**
String path = System.getProperty("user.dir") + "/screenshots/" + System.currentTimeMillis() + ".png";
File destination = new File(path);
try {
FileUtils.copyFile(src, destination);
} catch (IOException e) {
e.printStackTrace();
}
return path;
}
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|