Я пытаюсь построить Java-проект динамического метода для тестирования Selenium, хотя я сталкиваюсь со следующей проблемой, используя invoke (java.lang.reflect):
Когда вызов invoke передает аргументы длязаданный метод, сообщение об ошибке «java.lang.NoSuchMethodException».Однако, если у этого метода есть свои требования к аргументам, удаленным из метода, и аргументам, удаленным из вызова invoke, он работает нормально.
public class TestProj {
@SuppressWarnings("unchecked")
public static void main(String[] args) throws IOException, InterruptedException {
String testClass = "Class1";
String testMethod = "class1Method3";
Class testMethodArgs[] = {};
Class params[] = {};
Object paramsObj[] = {};
// get the Class
Class thisClass = null;
thisClass = Class.forName(testClass);
// get an instance
Object invClass = null;
invClass = thisClass.newInstance();
// get the method
Method thisMethod = null;
thisMethod = thisClass.getDeclaredMethod(testMethod, testMethodArgs);
// call the method
System.out.println("Starting...");
thisMethod.invoke(invClass, "options");
}
}
class Class1 {
public int class1Method3(String test) {
return 1;
}
}
Приведенная ниже ошибка отображается только в том случае, если thisMethod.invoke (invClass, "options") передается аргументам ("options").Когда эта «опция» расстается, если метод удален с тестом String, он работает нормально.
java.lang.NoSuchMethodException: Class1.class1Method3()
at java.lang.Class.getDeclaredMethod(Class.java:2130)
at TestProj.main(TestProj.java:197)
Exception in thread "main" java.lang.NullPointerException
at TestProj.main(TestProj.java:211)