Я использую Selenium RC с TestNG, чтобы провести какое-то тестирование на основе ключевых слов. Для этой же цели я хочу прочитать некоторые данные из таблицы Excel и использовать их. Здесь я использовал аннотацию провайдера данных TestNG. Но моя проблема является то, что я хочу читать данные из нескольких таблиц и использовать их в одном методе тестирования с использованием только одного поставщика данных. Но у меня возникают проблемы в этом. Может ли кто-нибудь помочь мне в этом.
Спасибо
Вот мой код:
@DataProvider(name = "DP1")
public Object[][] createData1() throws Exception {
return new Object[][] {
{getTableData.getTableArray(" Xls File Path", "Sheet name", "Table1")},
{getTableData.getTableArray(" Xls File Path", "Sheet name", "Table2")}
};
}
Это мой метод испытаний:
@Test (dataProvider = ("DP1"))
public void testallpivot(String Command, String Target, String Value) throws Exception {
//Test Code here
}
Но этот код показывает индекс массива вне пределов исключения.
Кто-нибудь, пожалуйста, помогите мне .....
Ну вот как выглядит getTableArray ..
public static Object[][] getTableArray(String xlFilePath, String sheetName, String tableName) throws Exception{
Object[][] tabArray;
Workbook workbook = Workbook.getWorkbook(new File(xlFilePath));
Sheet sheet = workbook.getSheet(sheetName);
int startRow,startCol, endRow, endCol,ci,cj;
Cell tableStart=sheet.findCell(tableName);
//System.out.println(tableName);
startRow=tableStart.getRow();
startCol=tableStart.getColumn();
Cell tableEnd= sheet.findCell(tableName, startCol+1,startRow+1, 100, 64000, false);
endRow=tableEnd.getRow();
endCol=tableEnd.getColumn();
System.out.println("startRow="+startRow+", endRow="+endRow+", " +
"startCol="+startCol+", endCol="+endCol);
tabArray=new String[endRow-startRow-1][endCol-startCol-1];
ci=0;
for (int i=startRow+1;i<endRow;i++,ci++){
cj=0;
for (int j=startCol+1;j<endCol;j++,cj++){
tabArray[ci][cj]=sheet.getCell(j,i).getContents();
}
}
return(tabArray);
}
А это трассировка стека .....
java.lang.ArrayIndexOutOfBoundsException: 1
at org.testng.internal.Invoker.injectParameters(Invoker.java:1144)
at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1020)
atorg.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:137)
at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:121)
at org.testng.TestRunner.runWorkers(TestRunner.java:953)
at org.testng.TestRunner.privateRun(TestRunner.java:633)
at org.testng.TestRunner.run(TestRunner.java:505)
at org.testng.SuiteRunner.runTest(SuiteRunner.java:359)
at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:354)
at org.testng.SuiteRunner.privateRun(SuiteRunner.java:316)
at org.testng.SuiteRunner.run(SuiteRunner.java:195)
at org.testng.TestNG.createAndRunSuiteRunners(TestNG.java:903)
at org.testng.TestNG.runSuitesLocally(TestNG.java:872)
at org.testng.TestNG.run(TestNG.java:780)
at org.testng.remote.RemoteTestNG.run(RemoteTestNG.java:75)
at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:127)