Mock-объект (мок) — это имитация реального объекта или зависимости в модульном тесте. Он используется для изоляции тестируемого компонента путем замены его зависимостей подконтрольными заглушками.
Основные цели использования моков:
- Изоляция: Тестирование только конкретного класса или метода, без учета поведения его зависимостей.
- Контроль: Возможность задать ожидаемое поведение зависимостей (возвращаемые значения, выбрасываемые исключения, количество вызовов методов) в различных тестовых сценариях.
- Ускорение: Избегание выполнения ресурсоемких или медленных операций реальных зависимостей (например, работа с базой данных, сетевые вызовы).
- Тестирование исключительных ситуаций: Простое моделирование ошибок или нестандартного поведения зависимостей, которое сложно воспроизвести с реальными объектами.
Типы "двойников" в тестировании (заглушек, моков и т.д.):
- Dummy: Передаются как аргументы, но не используются.
- Fake: Имеют рабочую реализацию, но упрощенную (например, база данных в оперативной памяти).
- Stub: Предоставляют предопределенные ответы на вызовы методов, но не проверяют их взаимодействие.
- Spy: По сути, это Stub, который также записывает информацию о вызовах методов (сколько раз, с какими аргументами).
- Mock: Заранее определяют ожидаемое поведение (ожидаемые вызовы методов с ожидаемыми аргументами) и при этом выполняют проверку этого поведения в конце теста.
Библиотеки для создания моков в Java:
- Mockito
- EasyMock
- PowerMock (для статических, приватных методов и конструкторов)
Пример использования Mockito:
java
Mock-объект (мок) — это имитация реального объекта или зависимости в модульном тесте. Он используется для изоляции тестируемого компонента путем замены его зависимостей подконтрольными заглушками.
Основные цели использования моков:
- Изоляция: Тестирование только конкретного класса или метода, без учета поведения его зависимостей.
- Контроль: Возможность задать ожидаемое поведение зависимостей (возвращаемые значения, выбрасываемые исключения, количество вызовов методов) в различных тестовых сценариях.
- Ускорение: Избегание выполнения ресурсоемких или медленных операций реальных зависимостей (например, работа с базой данных, сетевые вызовы).
- Тестирование исключительных ситуаций: Простое моделирование ошибок или нестандартного поведения зависимостей, которое сложно воспроизвести с реальными объектами.
Типы "двойников" в тестировании (заглушек, моков и т.д.):
- Dummy: Передаются как аргументы, но не используются.
- Fake: Имеют рабочую реализацию, но упрощенную (например, база данных в оперативной памяти).
- Stub: Предоставляют предопределенные ответы на вызовы методов, но не проверяют их взаимодействие.
- Spy: По сути, это Stub, который также записывает информацию о вызовах методов (сколько раз, с какими аргументами).
- Mock: Заранее определяют ожидаемое поведение (ожидаемые вызовы методов с ожидаемыми аргументами) и при этом выполняют проверку этого поведения в конце теста.
Библиотеки для создания моков в Java:
- Mockito
- EasyMock
- PowerMock (для статических, приватных методов и конструкторов)
Пример использования Mockito:
java