You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Selenium的@DataProvider时,此代码为何抛出数组越界异常?

数组越界异常原因分析与修复方案

我来帮你拆解这个问题——你碰到的数组越界异常,核心原因是数组初始化时的行数设置错误。先看看你的代码:

@DataProvider
public Object[][] getdata() {
    Object [][] data =new Object [0][1];
    data[0][0]="restricteduser";
    data[0][1]="123412";
    return data;
}

你初始化了一个行数为0的二维数组new Object [0][1],这意味着这个数组里完全没有可使用的行,根本不存在data[0]这个索引对应的位置。当你尝试给data[0][0]和data[0][1]赋值时,程序找不到对应的数组位置,直接抛出数组越界异常。

修复方案

你需要根据实际要返回的测试数据组数来初始化数组。比如你这里要返回1组包含2个参数的测试数据,就把数组的行数设为1,列数设为2(对应每组的参数个数)。修正后的代码如下:

@DataProvider
public Object[][] getdata() {
    // 初始化1行2列的数组,对应1组测试数据、每组2个参数
    Object [][] data =new Object [1][2];
    data[0][0]="restricteduser";
    data[0][1]="123412";
    return data;
}

或者更简洁的写法,直接在初始化时完成赋值:

@DataProvider
public Object[][] getdata() {
    return new Object[][] {
        {"restricteduser", "123412"}
    };
}

额外提示

  • 二维数组的第一个维度对应测试数据的组数,第二个维度对应每组数据的参数个数,必须和你要测试的方法参数数量保持一致。
  • 如果后续要添加多组测试数据,只需要在数组中新增对应的行即可,比如:
@DataProvider
public Object[][] getdata() {
    return new Object[][] {
        {"restricteduser", "123412"},
        {"adminuser", "admin123"},
        {"guestuser", "guest456"}
    };
}

内容的提问来源于stack exchange,提问作者Fayeq Najuib

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 08:33:00