Метод с примитивным аргументом, использующий PrivilegedAccessor
В моем Junit я пытаюсь выполнить метод, используя PrivilegedAccessor
как следует, но получая NoSuchMethodException: Invalid Method getInsurance
-
PrivilegedAccessor.invokeMethod(InsuranceRetriever,
"getInsurance", new Object[] { code}, new Class[] {
Long.class});
Ниже приводится описание протестированного метода.
private InsObj getInsurance(long code)
* Пожалуйста, обратите внимание, что здесь я передаю Long.class, тогда как реальный аргумент - примитивно длинный. Как передать примитивный аргумент.
1 ответ
Решение
Попробуй это:
PrivilegedAccessor.invokeMethod(InsuranceRetriever,
"getInsurance", new Object[] { code },
new Class[] { Long.TYPE });
Объяснение:
Объекты класса для примитивных типов находятся под статической конечной константой TYPE в каждом из объектов java.lang для каждого из примитивных типов. Boolean.TYPE
, Integer.TYPE
, Byte.TYPE
, Short.TYPE
, Long.TYPE
и т.п.