Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JUNIT参数错误:参数数目错误_Java_Junit_Parameterized - Fatal编程技术网

Java JUNIT参数错误:参数数目错误

Java JUNIT参数错误:参数数目错误,java,junit,parameterized,Java,Junit,Parameterized,我正在使用JUnit参数化测试,出现以下错误: java.lang.IllegalArgumentException:参数数目错误 代码如下: 测试: @参数 公共静态集合spreadsheetData()引发IOException{ InputStream文件=新文件InputStream(“c:\\Path\\to\\file\\jeje.xls”); 返回Utils.loadFromExcel(文件); } 方法: public static Collection<Object[]

我正在使用JUnit参数化测试,出现以下错误:

java.lang.IllegalArgumentException:参数数目错误

代码如下:

测试:

@参数
公共静态集合spreadsheetData()引发IOException{
InputStream文件=新文件InputStream(“c:\\Path\\to\\file\\jeje.xls”);
返回Utils.loadFromExcel(文件);
}
方法:

public static Collection<Object[]> loadFromExcel(final InputStream excelFile)
throws IOException {
    HSSFWorkbook workbook = new HSSFWorkbook(excelFile);

    Sheet sheet = workbook.getSheetAt(0);

    // Number of columns
    int numberOfColumns = countNonEmptyColumns(sheet);
    int rows=0;

    // Number of rows
    for (Row row : sheet) {
        rows++;
    }

    Object[][] datos = new Object[numberOfColumns][rows];

    for (int row = 0; row<rows; row++) {
            for (int column = 0; column < numberOfColumns; column++) {
                Cell cell = sheet.getRow(row).getCell(column);
                datos[column][row] = cell.getRichStringCellValue();
            }   
    }

    return Arrays.asList(datos);
}
公共静态集合loadFromExcel(最终InputStream Excel文件)
抛出IOException{
HSSF工作簿=新的HSSF工作簿(Excel文件);
工作表=工作簿。getSheetAt(0);
//列数
int numberOfColumns=countNonEmptyColumns(表);
int行=0;
//行数
用于(行:页){
行++;
}
Object[][]datos=新对象[numberOfColumns][rows];

对于(int row=0;row我假设电子表格中的每一行都是测试数据集,每一列都是测试的参数。 如果是这种情况,则需要将数组声明更改为
Object[][]datos=new Object[rows][numberOfColumns];
并相应地填充数组

示例

考虑到这个电子表格

a    b
c    d
e    f
g    h
…您当前的
loadFromExcel()
实现将返回下面的集合。spreadsheed中的新行将向结果列表中的每个数组添加新元素,但结果列表的大小将保持不变

[a, c, e, g]
[b, d, f, h]
我假设,该方法应该返回如下内容:

[a, b]
[c, d]
[e, f]
[g, h]

电子表格中的每一新行将向结果列表添加一个包含两个元素的新数组。

我假设电子表格中的每一行都是测试数据集,每一列都是测试的参数。 如果是这种情况,则需要将数组声明更改为
Object[][]datos=new Object[rows][numberOfColumns];
并相应地填充数组

示例

考虑到这个电子表格

a    b
c    d
e    f
g    h
…您当前的
loadFromExcel()
实现将返回下面的集合。spreadsheed中的新行将向结果列表中的每个数组添加新元素,但结果列表的大小将保持不变

[a, c, e, g]
[b, d, f, h]
我假设,该方法应该返回如下内容:

[a, b]
[c, d]
[e, f]
[g, h]

电子表格中的每一新行都将向结果列表中添加一个包含两个元素的新数组。

谢谢您的帮助。我更改了该错误,但问题仍然是,参数数量错误错误。您的单元测试类必须有一个公共构造函数,其参数数量与excel工作表中的列数量相同(即,
spreadsheetData()
方法返回的条目的数组大小)谢谢。最后,我以如下格式传递数据:return array.asList(new Object[]{{new Object[]{data1,data2}},{new Object[]{data1,data2}});谢谢您的帮助。我更改了该错误,但问题仍然是,参数数量错误。您的单元测试类必须有一个公共构造函数,其参数数量与excel工作表中的列数量相同(即,
spreadsheetData()
方法返回的条目数组大小)谢谢。最后我以如下格式传递数据:return array.asList(新对象[][{{new Object[]{data1,data2}},{new Object[]{data1,data2}}}});