问题描述
我想根据情况正确的数据/无效的数据,将Excel文件中的数据实施到不同的测试中,但是,当我想获取单元格值时,会得到“ NegativeArraySizeException”。 第一行只有一个标题,所以我不想阅读它,这就是为什么我有参数[rows-1]的原因。 您能指出我的错误吗? 谢谢
public class SignInTest extends Driver {
@BeforeMethod
public void setUp() {
Driver.initConfiguration();
}
public Object[][] getData(String excelPath,String sheetName) {
int rows = excel.getRowCount(sheetName);
int cols = excel.getColumnCount(sheetName);
Object[][] data = new Object[rows - 1][1];
excel = new ExcelReader(excelPath);
for (int rowNum = 1; rowNum < rows; rowNum++) {
for (int colNum = 0; colNum < cols; colNum++) {
data[rowNum - 1][colNum] = excel.getCellData(sheetName,colNum,rowNum);
}
}
return data;
}
@DataProvider(name = "credentials")
public Object[][] getCredentials() {
Object[][] data = getData(excelPath,sheetName);
return data;
}
@Test(dataProviderClass = DataProviders.class,dataProvider = "credentials")
public void loginWithCorrectCredentials(String email,String password) {
HomePageActions hp = new HomePageActions();
SignInActions sign = new SignInActions();
DataProviders dp = new DataProviders();
dp.getData(excelPath,"correctData");
System.out.println("email " + email);
System.out.println("password " + password);
}
解决方法
此函数“ excel.getRowCount(sheetName)”
在这一行:
int行= excel.getRowCount(sheetName);
返回0(或可能为null),因此当您执行row-1时,您得到的数字小于零。我希望很多事情是显而易见的。那么问题变成了为什么?
故障排除要寻找的东西:
- getColumnCount是否也返回零?如果是这样,则表明可能 工作表参考中的错误。
- sheetName是否确实正确地传递到函数中?
- 您可以在工作表上的特定位置插入一个明确的值吗?这意味着参考有效吗?投入测试行,看看会发生什么。
- 如果您将数组硬设置为: Object [] [] data = new Object [100] [1];
我的直觉告诉我,您对工作表的引用存在问题,但是如果不了解有关工作表引用的更多信息,就无法确定。
我希望其中一些能为您指明正确的方向并助您一臂之力。祝你好运!