| ASK Mockito Info Postman Lesen Version Download Googeln: уроки mockito SBS Tutorials: java-online.ru coderlessons.com coderlessons.com nixx78.blogspot.com tutorialspoint.com A. Lifecycle -- Создать Мок-объект --Info-- на основе настоящих Interface ICalculator и Class Calculator @Mock ICalculator mcalc; @InjectMocks Calculator calc = new Calculator(mcalc); 1. Указать поведение // when(mock).thenReturn(value) when(mcalc.add(10.0, 20.0)).thenReturn(30.0); // 2-й вариант: Указать поведение с использованием doReturn doReturn(15.0).when(mcalc).add(10.0, 5.0); 2. Использовать поведение // assertEquals() assertEquals(calc.add(10, 20), 30.0, 0); 3. Проверить поведение // verify() verify(mcalc).add(10.0, 20.0); // // Метод verify позволяет проверить, была ли выполнена проверка с определенными параметрами. Если проверка не выполнялась или выполнялась с другими параметрами, то verify вызовет исключение. B. Основные методы Mockito // 1. Указать поведение // when(mock).thenReturn(value) // 2. Подсчет количества вызовов - atLeast(), atLeastOnce(), atMost(), times(), never() java-online.ru --> 2. Подсчет количества вызовов - atLeast, atLeastOnce, atMost, times, never // 3. Обработка исключений - doThrow(exception).when(mock) // 4. Использование интерфейса org.mockito.stubbing.Answer<T> для методов со сложным поведением // 5. Использование шпиона spy на реальных объектах ( если я хочу использовать в качестве заглушки объект реального класса с имеющимся функционалом, переопределив работу только части его методов? ) // 6. Проверка вызова метода в течение заданного в timeout времени, timeout (не сразу дает Exception, если оно есть, при первой же проверке, а спустя заданное время пробует выполнить метод ещё раз) // 7. Использование в тестах java классов ------------- Mocking -- Simulation von fehlenden (Frontend?)-Modulen // zum Test von Java-Backend-API Mockito — фреймворк для работы с заглушками (stub). Cамый известным для Java Mockito — это Mocking Framework, который позволяет очень легко создавать макеты для классов и интерфейсов, с которыми взаимодействует ваш тестируемый класс При тестировании кода (прежде всего юнит-тестировании, но не только) тестируемому элементу часто требуется предоставить экземпляры классов, которыми он должен пользоваться при работе. При этом часто экземпляры классов не должны быть полнофункциональными — наоборот, от них требуется вести себя жёстко заданным образом, так, чтобы их поведение было простым и полностью предсказуемым. Они и называются заглушками (stub). Чтобы их получить, можно создавать альтернативные тестовые реализации интерфейсов, наследовать нужные классы с переопределением функционала и так далее, но всё это достаточно неудобно, избыточно и чревато ошибками. Более удобное во всех смыслах решение — специализированные фреймворки для создания заглушек. Mockito позволяет создать одной строчкой кода так называемый mock (что-то вроде основы для нужной заглушки) любого класса. Для такого mock сразу после создания характерно некое поведение по умолчанию (все методы возвращают заранее известные значения — обычно это null либо 0). Можно переопределить это поведение желаемым образом, проконтролировать с нужной степенью детальности обращения к ним так далее. В результате mock и становится заглушкой с требуемыми свойствами. Ниже я подробно разберу, как это сделать. !!! mock можно создать и для тех классов, новый экземпляр которых вообще-то так просто не создашь, в частности, классов с исключительно приватными конструкторами типа синглтонов и утилитных классов, а при минимальной настройке фреймворка — и перечислений (enums). !!! Для проверки работоспособности не требуется подключение к базе данных или чтение файла свойств или чтение файлового сервера ------------- -- Методы 1. Определение поведения - when(mock).thenReturn(value) 2. Подсчет количества вызовов - atLeast, atLeastOnce, atMost, times, never 3. Обработка исключений - when(mock).thenThrow() 4. Использование интерфейса org.mockito.stubbing.Answer<T> 5. Использование шпиона spy на реальных объектах 6. Проверка вызова метода с задержкой, timeout 7. Использование в тестах java классов |