Я использую PowerMockito для имитации вызова статического класса, и у метода есть аргумент, который представляет собой массив объектов. Таким образом, вызов должен выглядеть примерно так:
String temp = MyClass.doSomething(MyObject[] objArray1);
Но когда я пытаюсь издеваться над PowerMockito следующим образом:
@RunWith(PowerMockRunner.class)
@PrepareForTest(MyClass.class)
public class TestClass {
@Test
public void myTest {
MyObject[] myObjArray1 = new MyObject[1];
myObjArray1[0] = new MyObject();
PowerMockito.mockStatic(MyClass.class);
PowerMockito.when(MyClass.class, "doSomething", myObjArray1).thenReturn("A String");
...
}
Это дает мне предупреждение в Eclipse:
Аргумент типа MyObject[] должен быть явно приведен к Object[] для вызова метода varargs when(Class, String, Object...) из типа PowerMockito. В качестве альтернативы его можно было бы привести к объекту для вызова varargs. Но когда я привожу к объекту следующим образом:
PowerMockito.when(MyClass.class, "doSomething", (Object) objArray1).thenReturn("A String");
У меня не возвращается эта строка при выполнении этого метода, я предполагаю, что это связано с тем, что параметр типа объекта приводит к тому, что метод не распознается, поскольку он ожидает что-то типа MyObject в качестве параметра.
Любые идеи о том, как передать непримитив без приведения в качестве объекта или как заставить метод распознаваться при приведении?
String temp = MyClass.doSomething(Object[] objArray1);
? - person Jose Martinez   schedule 29.07.2015when
; он не изменяет тип самого аргумента. Проблема скорее всего вdoSomething
. Каковы подписиMyClass.doSomething
? - person Kenney   schedule 29.07.2015