Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/8.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.lang.IllegalArgumentException:以下代码段的参数数目错误_Java_Junit - Fatal编程技术网

获取java.lang.IllegalArgumentException:以下代码段的参数数目错误

获取java.lang.IllegalArgumentException:以下代码段的参数数目错误,java,junit,Java,Junit,我使用的是类集合,有一行代码如下所示。 请查找如下所示的完整代码,并让我知道此代码的错误,因为我遇到了错误: java.lang.IllegalArgumentException:参数数目错误 导入java.util.array; 导入java.util.Collection; 导入org.junit.Test; 导入org.junit.runner.RunWith; 导入org.junit.runners.Parameterized; 导入org.junit.runners.Parameter

我使用的是类集合,有一行代码如下所示。 请查找如下所示的完整代码,并让我知道此代码的错误,因为我遇到了错误:


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

导入java.util.array;
导入java.util.Collection;
导入org.junit.Test;
导入org.junit.runner.RunWith;
导入org.junit.runners.Parameterized;
导入org.junit.runners.Parameterized.Parameters;
@RunWith(参数化的.class)
公共类参数化{
字符串名;
字符串Lastname;
字符串密码;
智力年龄;
公共void参数化(字符串Firstname、字符串Lastname、字符串密码、整数){
this.Firstname=Firstname;
this.Lastname=Lastname;
this.Password=密码;
这个。年龄=年龄;
}
@参数
公共静态集合getdata(){
对象[][]数据=新对象[2][4];
数据[0][0]=“David”;
数据[0][1]=“贝克”;
数据[0][2]=“1234”;
数据[0][3]=12;
数据[1][0]=“David”;
数据[1][1]=“熊”;
数据[1][2]=“12345”;
数据[1][3]=21;
返回数组.asList(数据);
}
@试验
公共空间多洛金(){
System.out.println(名字+姓氏+密码+年龄);
}
}

我猜从
getdata()
返回的数据结构的大小与被测试方法所需的参数不匹配

我怀疑
Arrays.asList()
没有按照您期望的方式处理类型。它是使用varargs声明的,因此我可以调用
Arrays.asList(a)
获取包含一个元素的列表,或者调用
Arrays.asList(a,b,c)
获取包含三个元素的列表。当
a
的类型是数组时会出现问题:您是想要包含一个数组的列表,还是想要包含数组元素的列表?这种模糊性可能是问题所在(或者至少是其中之一)。我会这样重写它:

@Parameters
public static Collection<Object[]> getdata() {

    final List<Object[]> result = new ArrayList<>();

    result.add( new Object[] {"David", "Beck", "1234", 12} );
    result.add( new Object[] {"David", "Bear", "12345", 21} );

    return result;
}
@参数
公共静态集合getdata(){
最终列表结果=新建ArrayList();
结果.添加(新对象[]{“David”,“Beck”,“1234”,12});
结果.添加(新对象[]{“大卫”,“熊”,“12345”,21});
返回结果;
}

(我不熟悉您正在使用的JUnit注释,因此我做了一个有根据的猜测)

我的猜测是,您从
getdata()
返回的数据结构的大小与测试方法所需的参数不匹配

我怀疑
Arrays.asList()
没有按照您期望的方式处理类型。它是使用varargs声明的,因此我可以调用
Arrays.asList(a)
获取包含一个元素的列表,或者调用
Arrays.asList(a,b,c)
获取包含三个元素的列表。当
a
的类型是数组时会出现问题:您是想要包含一个数组的列表,还是想要包含数组元素的列表?这种模糊性可能是问题所在(或者至少是其中之一)。我会这样重写它:

@Parameters
public static Collection<Object[]> getdata() {

    final List<Object[]> result = new ArrayList<>();

    result.add( new Object[] {"David", "Beck", "1234", 12} );
    result.add( new Object[] {"David", "Bear", "12345", 21} );

    return result;
}
@参数
公共静态集合getdata(){
最终列表结果=新建ArrayList();
结果.添加(新对象[]{“David”,“Beck”,“1234”,12});
结果.添加(新对象[]{“大卫”,“熊”,“12345”,21});
返回结果;
}

(我不熟悉您正在使用的JUnit注释,因此我做出了一个有根据的猜测)

java.lang.IllegalArgumentException:参数数量错误。使用Eclipse和JUint。您在哪一行代码上得到错误?构造函数名称不正确。java.lang.IllegalArgumentException:参数数错误。使用Eclipse和JUint。您在哪一行代码上出错?构造函数名称不正确。感谢您的回复和回答。类名和构造函数名不同,所以我得到了错误。更正构造函数方法名称后,代码正在执行。这解决了我的确切问题—我在数组中含糊不清地构造元素。谢谢你的提示!感谢您的回复和回答。类名和构造函数名不同,所以我得到了错误。更正构造函数方法名称后,代码正在执行。这解决了我的确切问题—我在数组中含糊不清地构造元素。谢谢你的提示!