[b:1gpgqxip]Here is the Complete Stack Trace [/b:1gpgqxip]:-
[TestNG] Running:
C:\Users\TI01266\AppData\Local\Temp\testng-eclipse--2115654991\testng-customsuite.xml
Test Start From 7
Total Rows -- > 2
Total Coloumns are -- > 5
TestB
RunMode
Col1
Col2
Col3
Col4
Y
SKIPPED: testA
java.lang.RuntimeException: java.lang.ArrayIndexOutOfBoundsException: 2
at org.testng.internal.MethodInvocationHelper.invokeDataProvider(MethodInvocationHelper.java:162)
at org.testng.internal.Parameters.handleParameters(Parameters.java:430)
at org.testng.internal.Invoker.handleParameters(Invoker.java:1270)
at org.testng.internal.Invoker.createParameters(Invoker.java:985)
at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1075)
at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:125)
at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:108)
at org.testng.TestRunner.privateRun(TestRunner.java:774)
at org.testng.TestRunner.run(TestRunner.java:624)
at org.testng.SuiteRunner.runTest(SuiteRunner.java:359)
at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:354)
at org.testng.SuiteRunner.privateRun(SuiteRunner.java:312)
at org.testng.SuiteRunner.run(SuiteRunner.java:261)
at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)
at org.testng.TestNG.runSuitesSequentially(TestNG.java:1215)
at org.testng.TestNG.runSuitesLocally(TestNG.java:1140)
at org.testng.TestNG.run(TestNG.java:1048)
at org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:126)
at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:152)
at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:57)
Caused by: java.lang.ArrayIndexOutOfBoundsException: 2
at TestA.getdata(TestA.java:57)
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:85)
at org.testng.internal.MethodInvocationHelper.invokeDataProvider(MethodInvocationHelper.java:136)
... 20 more
===============================================
Default test
Tests run: 1, Failures: 0, Skips: 1
===============================================
===============================================
Default suite
Total tests run: 1, Failures: 0, Skips: 1
===============================================
[TestNG] Time taken by org.testng.reporters.JUnitReportReporter@7c3b99: 7 ms
[TestNG] Time taken by [FailedReporter passed=0 failed=0 skipped=0]: 11 ms
[TestNG] Time taken by org.testng.reporters.SuiteHTMLReporter@724356: 44 ms
[TestNG] Time taken by org.testng.reporters.XMLReporter@151574b: 6 ms
[TestNG] Time taken by org.testng.reporters.jq.Main@886462: 49 ms
[TestNG] Time taken by org.testng.reporters.EmailableReporter2@3f3b9b: 6 ms
data starts with zero
try this
data[rowData-1][cNum-1]=xls.getCellData("TestData",cNum,rNum); <<---->> Issue Come on this line.
or some other version of this like
data[rowData][cNum-1]
you'll have try which works..
Hi Ashish,
I tried with both but still facing the same issue.
[b:1pkqemjt]Stack Trace[/b:1pkqemjt] :-
[TestNG] Running:
C:\Users\TI01266\AppData\Local\Temp\testng-eclipse-1470431781\testng-customsuite.xml
Test Start From 7
Total Rows -- > 2
Total Coloumns are -- > 5
TestB
SKIPPED: testA
java.lang.RuntimeException: java.lang.ArrayIndexOutOfBoundsException: -1
at org.testng.internal.MethodInvocationHelper.invokeDataProvider(MethodInvocationHelper.java:162)
at org.testng.internal.Parameters.handleParameters(Parameters.java:430)
at org.testng.internal.Invoker.handleParameters(Invoker.java:1270)
at org.testng.internal.Invoker.createParameters(Invoker.java:985)
at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1075)
at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:125)
at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:108)
at org.testng.TestRunner.privateRun(TestRunner.java:774)
at org.testng.TestRunner.run(TestRunner.java:624)
at org.testng.SuiteRunner.runTest(SuiteRunner.java:359)
at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:354)
at org.testng.SuiteRunner.privateRun(SuiteRunner.java:312)
at org.testng.SuiteRunner.run(SuiteRunner.java:261)
at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)
at org.testng.TestNG.runSuitesSequentially(TestNG.java:1215)
at org.testng.TestNG.runSuitesLocally(TestNG.java:1140)
at org.testng.TestNG.run(TestNG.java:1048)
at org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:126)
at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:152)
at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:57)
Caused by: java.lang.ArrayIndexOutOfBoundsException: -1
at TestA.getdata(TestA.java:57)
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:85)
at org.testng.internal.MethodInvocationHelper.invokeDataProvider(MethodInvocationHelper.java:136)
... 20 more
===============================================
Default test
Tests run: 1, Failures: 0, Skips: 1
===============================================
===============================================
Default suite
Total tests run: 1, Failures: 0, Skips: 1
===============================================
[TestNG] Time taken by org.testng.reporters.SuiteHTMLReporter@1a2d3be: 55 ms
[TestNG] Time taken by [FailedReporter passed=0 failed=0 skipped=0]: 10 ms
[TestNG] Time taken by org.testng.reporters.jq.Main@76800e: 42 ms
[TestNG] Time taken by org.testng.reporters.JUnitReportReporter@2cef66: 6 ms
[TestNG] Time taken by org.testng.reporters.EmailableReporter2@1626c6d: 5 ms
[TestNG] Time taken by org.testng.reporters.XMLReporter@13a1324: 6 ms
Hi Ashish,
I tried it but still facing same issue.
Code :-
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
public class TestA {
@Test(dataProvider="getdata")
public void testA(String RunMode, String col1,String col2, String col3,String col4){
}
@DataProvider
public Object[][]getdata(){
Xls_Reader xls = new Xls_Reader("D:\\DataTestNG.xlsx");
//String sheetName="Data";
String testCasename="TestB";
int testStartRowNum =1;
while(!xls.getCellData("TestData", 0, testStartRowNum).equals(testCasename)){
testStartRowNum++;
}
System.out.println("Test Start From " +testStartRowNum);
//************************ Calculate rows of data************************
int colStartRowNum = testStartRowNum+1; //0+1=1
int dataStartRowNum= testStartRowNum+2; //0+2=2
int rows=0;
while(!xls.getCellData("TestData", 0, dataStartRowNum+rows).equals("")){
rows++;
}
System.out.println("Total Rows -- > " +rows);
//**********************Calculate column of data**************************
int cols=0;
while(!xls.getCellData("TestData", cols, colStartRowNum).equals("")){
cols++;
}
System.out.println("Total Coloumns are -- > " +cols);
Object[][] data = new Object[rows][cols];
//************************ Read the data from Excel*****************************
int rowData=0;
for(int rNum=testStartRowNum;rNum<dataStartRowNum+rows;rNum++){
for(int cNum=0;cNum<cols;cNum++){
System.out.println(xls.getCellData("TestData", cNum,rNum));
[b:veq2ryty]data[rowData-1][cNum]=xls.getCellData("TestData",cNum,rNum);[/b:veq2ryty] <------>
}
rowData++;
}
return data;
}
}
[b:veq2ryty]Stack Trace :-[/b:veq2ryty]
[TestNG] Running:
C:\Users\TI01266\AppData\Local\Temp\testng-eclipse-1560889565\testng-customsuite.xml
Test Start From 7
Total Rows -- > 2
Total Coloumns are -- > 5
TestB
SKIPPED: testA
java.lang.RuntimeException: java.lang.ArrayIndexOutOfBoundsException: -1
at org.testng.internal.MethodInvocationHelper.invokeDataProvider(MethodInvocationHelper.java:162)
at org.testng.internal.Parameters.handleParameters(Parameters.java:430)
at org.testng.internal.Invoker.handleParameters(Invoker.java:1270)
at org.testng.internal.Invoker.createParameters(Invoker.java:985)
at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1075)
at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:125)
at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:108)
at org.testng.TestRunner.privateRun(TestRunner.java:774)
at org.testng.TestRunner.run(TestRunner.java:624)
at org.testng.SuiteRunner.runTest(SuiteRunner.java:359)
at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:354)
at org.testng.SuiteRunner.privateRun(SuiteRunner.java:312)
at org.testng.SuiteRunner.run(SuiteRunner.java:261)
at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)
at org.testng.TestNG.runSuitesSequentially(TestNG.java:1215)
at org.testng.TestNG.runSuitesLocally(TestNG.java:1140)
at org.testng.TestNG.run(TestNG.java:1048)
at org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:126)
at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:152)
at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:57)
Caused by: java.lang.ArrayIndexOutOfBoundsException: -1
at TestA.getdata(TestA.java:57)
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:85)
at org.testng.internal.MethodInvocationHelper.invokeDataProvider(MethodInvocationHelper.java:136)
... 20 more
===============================================
Default test
Tests run: 1, Failures: 0, Skips: 1
===============================================
===============================================
Default suite
Total tests run: 1, Failures: 0, Skips: 1
===============================================
[TestNG] Time taken by org.testng.reporters.SuiteHTMLReporter@1a2d3be: 35 ms
[TestNG] Time taken by [FailedReporter passed=0 failed=0 skipped=0]: 7 ms
[TestNG] Time taken by org.testng.reporters.jq.Main@76800e: 26 ms
[TestNG] Time taken by org.testng.reporters.JUnitReportReporter@2cef66: 4 ms
[TestNG] Time taken by org.testng.reporters.EmailableReporter2@1626c6d: 48 ms
[TestNG] Time taken by org.testng.reporters.XMLReporter@13a1324: 4 ms
[color=#FF0000:3oygkmcq]Object[][] data = new Object[rows][column];
[/color:3oygkmcq]
print the value of rows and column
[color=#FF0000:3oygkmcq]data[rowData][cNum]=xls.getCellData("TestData",cNum,rNum); <------>
}[/color:3oygkmcq]
print the the value of rowData and cNum(in for loop).
and run the program. and send a screen shot
Hi below is the Output of the value. So please suggest where i am wrong.
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
public class TestA {
@Test(dataProvider="getdata")
public void testA(String RunMode, String col1,String col2, String col3,String col4){
}
@DataProvider
public Object[][]getdata(){
Xls_Reader xls = new Xls_Reader("D:\\DataTestNG.xlsx");
//String sheetName="Data";
String testCasename="TestB";
int testStartRowNum =1;
while(!xls.getCellData("TestData", 0, testStartRowNum).equals(testCasename)){
testStartRowNum++;
}
System.out.println("Test Start From " +testStartRowNum);
//************************ Calculate rows of data************************
int colStartRowNum = testStartRowNum+1; //0+1=1
int dataStartRowNum= testStartRowNum+2; //0+2=2
int rows=0;
while(!xls.getCellData("TestData", 0, dataStartRowNum+rows).equals("")){
rows++;
}
System.out.println("Total Rows -- > " +rows);
//**********************Calculate column of data**************************
int cols=0;
while(!xls.getCellData("TestData", cols, colStartRowNum).equals("")){
cols++;
}
System.out.println("Total Coloumns are -- > " +cols);
Object[][] data = new Object[rows][cols];
//************************ Read the data from Excel*****************************
int rowData=1;
for(int rNum=testStartRowNum;rNum<dataStartRowNum+rows;rNum++){
for(int cNum=0;cNum<cols;cNum++){
System.out.println(xls.getCellData("TestData", cNum,rNum));
data[rowData-1][cNum]= xls.getCellData("TestData",cNum,rNum);
}
rowData++;
}
return data;
}
}
[b:wfynld7x]ScreenShot attached[/b:wfynld7x]
system.out.print(rowData+""+cNum);
put this in for loop
//************************ Read the data from Excel*****************************
int rowData=1;
for(int rNum=testStartRowNum;rNum<dataStartRowNum+rows;rNum++){
for(int cNum=0;cNum<cols;cNum++){
[color=#FF0000:1jyitrs2]system.out.print(rowData+""+cNum);
[/color:1jyitrs2]
System.out.println(xls.getCellData("TestData", cNum,rNum));
data[rowData-1][cNum]= xls.getCellData("TestData",cNum,rNum);
}
rowData++;
}
return data;
}
}
Hi Ashish,
Issue Resolve. Updated Code is below
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
public class TEST {
@Test(dataProvider="getdata")
public void testA(String RunMode, String col1,String col2, String col3,String col4){
}
@DataProvider
public Object[][]getdata(){
Xls_Reader xls = new Xls_Reader("D:\\DataTestNG.xlsx");
//String sheetName="Data";
String testCasename="TestB";
int testStartRowNum =1;
while(!xls.getCellData("TestData", 0, testStartRowNum).equals(testCasename)){
testStartRowNum++;
}
System.out.println("Test Start From " +testStartRowNum); ///// 7
//************************ Calculate rows of data************************
int colStartRowNum = testStartRowNum+1; //0+1=1 ////////////8
int dataStartRowNum= testStartRowNum+2; //0+2=2 /////////// 9
int rows=0;
while(!xls.getCellData("TestData", 0, dataStartRowNum+rows).equals("")){
rows++;
}
System.out.println("Total Rows -- > " +rows); //////2
//**********************Calculate column of data**************************
int cols=0;
while(!xls.getCellData("TestData", cols, colStartRowNum).equals("")){
cols++;
}
System.out.println("Total Coloumns are -- > " +cols);
Object[][] data = new Object[rows][cols];
//************************ Read the data from Excel*****************************
int rowData=1;
[b:364av1hy]for(int rNum=dataStartRowNum;rNum<dataStartRowNum+rows;rNum++)[/b:364av1hy]{ -----> [b:364av1hy]rNum should be dataStartRowNum[/b:364av1hy]previously i used "[b:364av1hy]testStartRowNum[/b:364av1hy]"dueto that issue occur.
for(int cNum=0;cNum<cols;cNum++){
System.out.print(rowData+""+cNum);
System.out.println(xls.getCellData("TestData", cNum,rNum));
data[rowData-1][cNum]=xls.getCellData("TestData",cNum,rNum);
}
rowData++;
}
return data;
}}
[b:364av1hy]SCREEN SHOT ATTACHED[/b:364av1hy]