#java #mockito
#Ява #мокито
Вопрос:
Мне нужно поиздеваться над статическим методом класса, который также является пустым. Итак, давайте скажем, если мой класс такой.
class Util{ public static void test(){} }
и мой класс действий, который вызывает метод Util
class Action{ public void update(){ Util.test(); } }
Мой тестовый класс-это:
class Test{ Action action=new Action(); action.update(); //want to }
Мой вопрос в том, как я могу имитировать класс и проверить, вызывается ли его метод Util.test(); как я могу поставить что-то вроде:
дано(Util.test());//в этом случае я не могу поставить willReturn, так как это имеет тип void
Ответ №1:
Вы этого не делаете; это вызывает всевозможные проблемы. Вместо этого либо протестируйте конечные эффекты вашего статического метода (хотя лучше, если статические методы не имеют побочных эффектов), либо замените вызов статического метода функциональным интерфейсом, таким как Runnable
или Consumer
, и передайте Util::test
Action
его конструктору.
Ответ №2:
Вы можете использовать verify()
Mockito
это.
import static org.mockito.Mockito.atLeast; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; verify(mockObject, atLeast(2)).someMethod("was called at least twice"); verify(mockObject, times(3)).someMethod("was called exactly three times");
Комментарии:
1. Спасибо, но я не могу создать объект. Это статический метод, который нужно вызывать как Util.test(),
2. Как правило, вы не издеваетесь над статическими методами. Вы просто исходите из предположения, что они работают нормально.