NegativeArraySizeException,DataProvider,Excel

问题描述

我想根据情况正确的数据/无效的数据,将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);

    }

table

解决方法

此函数“ excel.getRowCount(sheetName)”

在这一行:

int行= excel.getRowCount(sheetName);

返回0(或可能为null),因此当您执行row-1时,您得到的数字小于零。我希望很多事情是显而易见的。那么问题变成了为什么?

故障排除要寻找的东西:

  • getColumnCount是否也返回零?如果是这样,则表明可能 工作表参考中的错误。
  • sheetName是否确实正确地传递到函数中?
  • 您可以在工作表上的特定位置插入一个明确的值吗?这意味着参考有效吗?投入测试行,看看会发生什么。
  • 如果您将数组硬设置为: Object [] [] data = new Object [100] [1];

我的直觉告诉我,您对工作表的引用存在问题,但是如果不了解有关工作表引用的更多信息,就无法确定。

我希望其中一些能为您指明正确的方向并助您一臂之力。祝你好运!