Я хотел бы смоделировать ВСЕ методы в классе, чтобы они возвращали один результат, вместо того, чтобы проверять каждый в отдельности, что-то вроде:
mock(Foo.class, allMethodsWithAnyArgs).thenReturn('abc');
Я очень новичок в Java тестировании, поэтому, пожалуйста, прости тупой вопрос. В этом гигантском проекте есть Mockito, PowerMockito, PowerMock, EasyMock и, возможно, другие вещи, поэтому я могу использовать все, что порекомендовано.
В расширенном примере будет что-то вроде этого, где мне нужно протестировать Foo:
public class Foo {
doSomething(){
Bar bar = new bar();
// some code
bar.x(a);
// some code
bar.x(a, b, c);
// some more code
bar.y(...);
// even more code
bar.z(...);
}
}
Мне нужно заглушить все вызовы в баре, но мне плевать на возвращение, или я хочу получить одинаковый возврат, скажем, 1 или «хорошо» для всех из них и т. Д. c.
ОБНОВЛЕНИЕ: я согласен, что это не лучший код для тестирования, вот обновленный пример того, что я пытаюсь протестировать в этом случае, поэтому мне нужно заглушить MyUtil и методы bar, это stati c, так как Вы предлагаете мне их рефакторинг? Для меня не имеет смысла указывать MyUtil в качестве обязательного аргумента, и я бы предпочел оставить Foo как всегда c, если это возможно. Рабочий тестовый файл был бы очень признателен, так как я уже несколько дней борюсь с подобными вещами.
public class Foo {
public static Object doSomething(Long id){
Bar bar = new Bar();
Object obj;
if(somecondition) {
Long vnumber = MyUtil.getVNumber(id);
obj = bar.getCurrentObj(id, vnumber);
} else {
obj = bar.getPreviousObj(id);
}
bar.z(obj);
....
}
}
Кроме того, одним из пунктов этого класса было сделать его черным ящиком, Я не хочу, чтобы вызывающий беспокоился о создании экземпляров и их передаче, или даже о том, как все работает, я просто хочу передать идентификатор и получить для него результат. Некоторые вызывающие функции даже не имеют доступа к Bar, например, поэтому я не могу сделать это обязательным параметром.