0

It throws a java.lang.NullPointerException, but why it shows that, I could not find. Here is my code.

ExcelUtil

package Utils;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import org.apache.poi.ss.usermodel.DataFormatter;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public class ExcelUtil {
 
 public static FileInputStream fi;
 public static FileOutputStream fo;
 public static XSSFWorkbook wb;
 public static XSSFSheet ws;
 public static XSSFRow row;
 public static XSSFCell cell;
 
 public static int getRowCount(String excelPath, String sheetName) throws IOException {
 fi= new FileInputStream(excelPath);
 wb= new XSSFWorkbook(fi);
 ws= wb.getSheet(sheetName);
 int rowcount= ws.getLastRowNum();
 System.out.println(rowcount);
 wb.close();
 fi.close();
 return rowcount;
 }
 
 public static int getCellCount(String excelPath, String sheetName, int rownum) throws IOException {
 fi= new FileInputStream(excelPath);
 wb= new XSSFWorkbook(fi);
 ws= wb.getSheet(sheetName);
 row= ws.getRow(rownum);
 int cellcount= row.getLastCellNum();
 wb.close();
 fi.close();
 return cellcount;
 }
 
 public static String getCellData(String excelPath, String sheetName, int rownum, int colnum) throws IOException {
 fi= new FileInputStream(excelPath);
 wb= new XSSFWorkbook(fi);
 ws= wb.getSheet(sheetName);
 row= ws.getRow(rownum);
 cell= row.getCell(colnum);
 String data;
 try {
 DataFormatter formatter = new DataFormatter();
 String cellData = formatter.formatCellValue(cell);
 return cellData;
 
 } catch (Exception exp) {
 data="";
 System.out.println(exp.getMessage());
 System.out.println(exp.getCause());
 exp.printStackTrace();
 }
 wb.close();
 fi.close();
 return data;
 }
}

DataDrivenPostRequest

package DataDrivenAPICollection;
import static io.restassured.RestAssured.given;
import java.io.IOException;
import org.json.simple.JSONObject;
import org.testng.annotations.DataProvider;
import org.testng.annotations.*;
import All_Utils.ExcelUtils;
import Utils.ExcelUtil;
import io.restassured.http.ContentType;
public class DataDrivenPostRequest {
 
 JSONObject request = new JSONObject();
 
 String path = System.getProperty("user.dir");
 String excelPath = path + "./API_Data/TestData.xlsx";
 String sheetName = "Data1";
 
 ExcelUtils excel = new ExcelUtils(excelPath, sheetName);
 
 @Test(dataProvider="empdataprovider")
 public void PostRequestTest(String Name, String Image, String Age, String DateofBirth, String Mobile, String Email, String Password) {
 request.put("Name", Name);
 request.put("Image", Image);
 request.put("Age", Age);
 request.put("DateofBirth", DateofBirth);
 request.put("Mobile", Mobile);
 request.put("Email", Email);
 request.put("Password", Password);
 given().
 header("Content-Type","application/json").
 contentType(ContentType.JSON).
 accept(ContentType.JSON).
 body(request.toString()).
 when().
 post("https://almashossain.com/APP/VIEWS/API.php?RequestTitle=EmployeeRegistration").
 then().
 statusCode(200).
 log().all();
 
 }
 
 @DataProvider(name="empdataprovider")
 String [][] getEmpdata() throws IOException{
 String excelPath = "./API_Data/TestData.xlsx";
 String sheetName = "Data1";
 
 ExcelUtil excel = new ExcelUtil();
 
 int rownum = excel.getRowCount(excelPath, sheetName);
 int colcount = excel.getCellCount(excelPath, sheetName,1);
 
 String empdata[][] = new String[rownum][colcount]; 
 
 for (int i = 1; i <= rownum; i++) {
 for (int j = 0; j < colcount; j++) {
 empdata[i-1][j] = excel.getCellData(excelPath, sheetName, i, j);
 
 }
 
 }
 
 return(empdata);
 }
}

Error messages:

[RemoteTestNG] detected TestNG version 7.3.0
[Utils] [ERROR] [Error] java.lang.NullPointerException
 at Utils.ExcelUtil.getRowCount(ExcelUtil.java:27)
 at DataDrivenAPICollection.DataDrivenPostRequest.getEmpdata(DataDrivenPostRequest.java:56)
 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
 at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
 at java.lang.reflect.Method.invoke(Unknown Source)
 at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:132)
 at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:76)
 at org.testng.internal.MethodInvocationHelper.invokeMethodNoCheckedException(MethodInvocationHelper.java:45)
 at org.testng.internal.MethodInvocationHelper.invokeDataProvider(MethodInvocationHelper.java:145)
 at org.testng.internal.Parameters.handleParameters(Parameters.java:797)
 at org.testng.internal.Parameters.handleParameters(Parameters.java:740)
 at org.testng.internal.ParameterHandler.handleParameters(ParameterHandler.java:59)
 at org.testng.internal.ParameterHandler.createParameters(ParameterHandler.java:38)
 at org.testng.internal.TestInvoker$MethodInvocationAgent.invoke(TestInvoker.java:789)
 at org.testng.internal.TestInvoker.invokeTestMethods(TestInvoker.java:147)
 at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:146)
 at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:128)
 at java.util.ArrayList.forEach(Unknown Source)
 at org.testng.TestRunner.privateRun(TestRunner.java:764)
 at org.testng.TestRunner.run(TestRunner.java:585)
 at org.testng.SuiteRunner.runTest(SuiteRunner.java:384)
 at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:378)
 at org.testng.SuiteRunner.privateRun(SuiteRunner.java:337)
 at org.testng.SuiteRunner.run(SuiteRunner.java:286)
 at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:53)
 at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:96)
 at org.testng.TestNG.runSuitesSequentially(TestNG.java:1218)
 at org.testng.TestNG.runSuitesLocally(TestNG.java:1140)
 at org.testng.TestNG.runSuites(TestNG.java:1069)
 at org.testng.TestNG.run(TestNG.java:1037)
 at org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:115)
 at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:251)
 at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:77)
SKIPPED: PostRequestTest
java.lang.RuntimeException: java.lang.NullPointerException
 at org.testng.internal.MethodInvocationHelper.invokeMethodNoCheckedException(MethodInvocationHelper.java:49)
 at org.testng.internal.MethodInvocationHelper.invokeDataProvider(MethodInvocationHelper.java:145)
 at org.testng.internal.Parameters.handleParameters(Parameters.java:797)
 at org.testng.internal.Parameters.handleParameters(Parameters.java:740)
 at org.testng.internal.ParameterHandler.handleParameters(ParameterHandler.java:59)
 at org.testng.internal.ParameterHandler.createParameters(ParameterHandler.java:38)
 at org.testng.internal.TestInvoker$MethodInvocationAgent.invoke(TestInvoker.java:789)
 at org.testng.internal.TestInvoker.invokeTestMethods(TestInvoker.java:147)
 at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:146)
 at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:128)
 at java.util.ArrayList.forEach(Unknown Source)
 at org.testng.TestRunner.privateRun(TestRunner.java:764)
 at org.testng.TestRunner.run(TestRunner.java:585)
 at org.testng.SuiteRunner.runTest(SuiteRunner.java:384)
 at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:378)
 at org.testng.SuiteRunner.privateRun(SuiteRunner.java:337)
 at org.testng.SuiteRunner.run(SuiteRunner.java:286)
 at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:53)
 at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:96)
 at org.testng.TestNG.runSuitesSequentially(TestNG.java:1218)
 at org.testng.TestNG.runSuitesLocally(TestNG.java:1140)
 at org.testng.TestNG.runSuites(TestNG.java:1069)
 at org.testng.TestNG.run(TestNG.java:1037)
 at org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:115)
 at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:251)
 at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:77)
Caused by: java.lang.NullPointerException
 at Utils.ExcelUtil.getRowCount(ExcelUtil.java:27)
 at DataDrivenAPICollection.DataDrivenPostRequest.getEmpdata(DataDrivenPostRequest.java:56)
 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
 at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
 at java.lang.reflect.Method.invoke(Unknown Source)
 at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:132)
 at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:76)
 at org.testng.internal.MethodInvocationHelper.invokeMethodNoCheckedException(MethodInvocationHelper.java:45)
 ... 25 more
asked Sep 14, 2020 at 9:20

1 Answer 1

1

Check if you have correct sheet name. As you can see in stacktrace, error happens in ExcelUtil line 27. Debug/Print the sheet name to see if the value is correct.

answered Sep 14, 2020 at 10:22
1
  • Yeah, I solved the problem. Some how my modified sheet name was not saved properly. Commented Sep 15, 2020 at 13:17

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.