Java:非法参数异常

标签 java unit-testing reflection illegalargumentexception

我得到一个IllegalArgumentException,但我不知道为什么。

我要访问的函数:

private static Player checkEvents(Player[] players, GameMaster bananas)

有问题的代码:

@Test
public void testCheckEvents() throws SecurityException, NoSuchMethodException, IllegalArgumentException, IllegalAccessException, InvocationTargetException {
    Game g = new Game();
    GameMaster gm = new GameMaster(4);
    Player[] p = new Player[] {new Player(gm), new Player(gm), new Player(gm), new Player(gm)};

    Method checkEvents = g.getClass().getDeclaredMethod("checkEvents", new Class[] {p.getClass(), GameMaster.class});
    checkEvents.setAccessible(true);

    checkEvents.invoke(p, gm); // fails here
}

失败:

testCheckEvents(nth.bananas.GameTest)
java.lang.IllegalArgumentException: wrong number of arguments

我做错了什么?

最佳答案

invoke 的第一个参数必须是调用该方法的对象:

checkEvents.invoke(g, p, gm)

由于您的方法是static,您还可以使用null 代替对象引用g

关于Java:非法参数异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1964814/

相关文章:

unit-testing - 如何对使用适用于 Go V2 的 AWS 开发工具包实现的 Lambda 进行单元测试

c# - EntityFrameworkCore 有没有一种方法可以创建 EnumToStringConverter 而无需将枚举类型作为通用类型传递?

用于 Web 开发的 Java 技术

java - 无法使用具有多个步骤文件的 Cucumber 配置 Spring Boot

unit-testing - 如何在Grails测试中填充有效参数

java - 在 Mock Spring Junit 测试期间注入(inject)/设置对象

java - 如何在 tomcat 8 上禁用特定 api 调用的 ssl 连接?

java - 在 SmartGWT ListGrid 中获取可见列

function - 动态确定 Go 中的函数参数

java - 使用 Java Reflections 获取通用类字段类型