当前位置: 首页 > 知识库问答 >
问题:

获取java.lang.IllegalArgumentExcema:错误的参数数量错误的代码片段

张浩阔
2023-03-14

我正在使用类集合,并有一行代码,如下所示。请找到完整的代码如下所示,让我知道什么是错误的代码,因为我得到的错误:

JAVAlang.IllegalArgumentException:参数数量错误

import java.util.Arrays;
import java.util.Collection;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;

@RunWith(Parameterized.class)
public class Parameterizing {
    String Firstname;
    String Lastname;
    String Password;
    int age;

    public void paratemeterizing(String Firstname, String Lastname, String Password, int age) {
        this.Firstname = Firstname;
        this.Lastname = Lastname;
        this.Password = Password;
        this.age = age;
    }

    @Parameters
    public static Collection<Object[]> getdata() {
        Object[][] data = new Object[2][4];
        data[0][0]= "David";
        data[0][1]= "Beck";
        data[0][2] = "1234";
        data[0][3] = 12;
        data[1][0]= "David";
        data[1][1]= "Bear";
        data[1][2] = "12345";
        data[1][3] = 21;
        return Arrays.asList(data);
    }

    @Test
    public void doLogin() {
        System.out.println(Firstname+Lastname+Password+age);
    }
}

共有1个答案

郑向阳
2023-03-14

我的猜测是,从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;
}

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

 类似资料:
  • 我尝试在具有不可见结构器类(字符串变量0,记录器var1,记录器上下文变量2)的最终类中访问info(字符串变量)方法) 这就是错误

  • 试图找出我出错的原因。我的数字介于-1和1之间,但仍然有错误。 数学域错误 有什么想法吗? 谢谢

  • 许多Android java方法返回数字常量值。在记录或向用户显示值时,我希望自动将这些值转换为字符串(类似于Windows API/)。然而,除了切换所有可能的值并生成匹配的字符串之外,我找不到一种方法来实现这一点。 例如:返回一个整数值:(0)、(1)、(2)。我想把数字转换成适当的字符串。我可以写一个这样的开关案例: 但我想避免它,尤其是当有超过3个可能的返回值时。 我试着在StackExc

  • 问题内容: 我在Access DB的VB应用程序中有此查询: 它给出了我无法解决的以下问题… “查询表达式’ISNULL(a.faultCount,0’)中的函数使用的参数数量错误。” 我要实现的只是将值设置为零,这意味着在特定区域中没有故障。 谢谢你 问题答案: 我想补充我的两分钱,而我喜欢NZ()的简单的语法,如果你寻求无故障性能,既ISNULL()和新西兰()应该有利于为NULL来避免: 。

  • 1005:创建表失败 1006:创建数据库失败 1007:数据库已存在,创建数据库失败 1008:数据库不存在,删除数据库失败 1009:不能删除数据库文件导致删除数据库失败 1010:不能删除数据目录导致删除数据库失败 1011:删除数据库文件失败 1012:不能读取系统表中的记录 1020:记录已被其他用户修改 1021:硬盘剩余空间不足,请加大硬盘可用空间 1022:关键字重复,更改记录失败

  • 错误代码 宏定义 #define  RT_EOK   0   无错误   #define  RT_ERROR   1   一般错误   #define  RT_ETIMEOUT   2   超时错误   #define  RT_EFULL   3   资源已满   #define  RT_EEMPTY   4   资源已空   #define  RT_ENOMEM   5   内存不足   #de