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 классов