Я хочу проверить, вызван ли конкретный конструктор определенным набором параметров и проверить правильность параметров.PowerMockito проверяет вызов конструктора произвольного числа
Класс использует произвольные параметры Java (...), как это:
public class MyClass{
public MyClass(Object o, int... params){
//DOSOMETHING
}
}
Класс испытуемый имеет метод, сделать это:
@RunWith(PowerMockRunner.class) @PrepareForTest(MyClass.class)
public class ClassUnderTest {
private int[] par;
public ClassUnderTest(int... params){
this.par = params;
}
public MyClass methodToTest(){
return new MyClass(null, this.par);
}
}
Я хочу, чтобы проверить, что возвращенный MyClass был вызван с правильными аграментами.
То, что я сделал это:
whenNew(MyClass.class).withAnyArguments().thenReturn(null);
ClassUnderTest clazz = new ClassUnderTest(0, 1, 2);
MyClass res = clazz.methodToTest();
verifyNew(MyClass.class).withArguments(eq(null), any(int[].class));
Но не работает с этой ошибкой:
java.lang.AssertionError: Wanted but not invoked my.package.MyClass(
null,
<any>
);
Actually, there were zero interactions with this mock.
Есть ли у вас какие-либо предложения или идеи, как проверить это, я хотел бы избежать использования getters MyClass .....
Могу ли я спросить, почему ** ** Вы хотели бы избежать просто проверить состояние из MyClass после его создания? Все это выглядит довольно просто, только эти требования приводят вас к необходимости PowerMockito вообще ... (и это, как правило, решение проблем, которые вам не нужны). –
Я думал, что это должно работать: 'verifyNew (MyClass.class) .withArguments (eq (null), Matchers. anyVararg());', но ни один. Вероятно, это ошибка ... Так же, как и в отношении удобства, он не ответил на ваш вопрос вообще, это работает: 'verifyNew (MyClass.class) .withArguments (eq (null), anyInt(), anyInt(), anyInt()); '. Я буду ждать ответов –
troig