Я хотел бы явно не указывать метод, который я вызываю в аргументах invokeMethod()
. Powermock предлагает перегруженный invokeMethod()
, который передает метод, основанный на переданных параметрах.Как использовать метод Whitebox.invokeMethod (объект Object, Object ... arguments) Powermock, когда мой первый параметр метода - тип String?
invokeMethod(Object instance, Object... arguments)
Проблема Я бегу в том, что мой первый параметр имеет тип String
. Это вызывает метод invokeMethod()
с подписью,
invokeMethod(Object instance, String methodToExecute, Object... arguments)
Вот модель теста ...
@Test
public void thisIsATest() throws Exception{
TheClassBeingTested myClassInstance = new TheClassBeingTested();
String expected = "60";
String firstArgument = "123A48";
ReturnType returnedTypeValue = Whitebox.invokeMethod(myClassInstance, firstArgument, AnEnum.TypeA);
String actual = returnedTypeValue.getTestedField();
assertEquals("Expected should be actual when AnEnum is TypeA", expected, actual);
}
Это дает мне ошибку,
org.powermock.reflect.exceptions.MethodNotFoundException: No method found with name '123A48' with parameter types: [ AnEnum ] in class TheClassBeingTested.`
Я получил его на работу изменив тип первого параметра на Object
, но мне это кажется грязным.
@Test
public void thisIsATest() throws Exception{
TheClassBeingTested myClassInstance = new TheClassBeingTested();
String expected = "60";
Object firstArgument = "123A48";
ReturnType returnedTypeValue = Whitebox.invokeMethod(myClassInstance, firstArgument, AnEnum.TypeA);
String actual = returnedTypeValue.getTestedField();
assertEquals("Expected should be actual when AnEnum is TypeA", expected, actual);
}
Есть правильный способ передать String
типа в качестве первого аргумента, а не жесткого кодирования моего имени метода в invokeMethod()
вызова? Я ничего не нашел в документации Powermock или форумах, рассматривающих это, но это, конечно, не может быть так уж необычно.
Я понимаю, что я могу вызвать метод путем жесткого кодирования буквального имени.Powermock рекомендует использовать invokeMethod (Object instance, Object ... arguments), если подпись параметра метода уникальна (что она есть), и я склонен согласиться. – pluralMonad