Runnable Jar File not running because coultnt read excel datas..but works fine in Eclipse

260 Views Asked by At

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;
}
0

There are 0 best solutions below