Бросаем checked Exceptions из mock объектов с Mockito

Пройдите тест, узнайте какой профессии подходите

Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Для эмуляции проверяемых исключений в Mockito, используя thenThrow, выполните следующие действия:

Java
Скопировать код
MyClass myMock = Mockito.mock(MyClass.class);
Mockito.when(myMock.метод()).thenThrow(MyCheckedException.class);
myMock.метод();  // Здесь произойдёт выброс MyCheckedException

Замените MyCheckedException.class на класс вашего исключения.

Убедитесь, что в сигнатуре метода указано выбрасываемое исключение.

Кинга Идем в IT: пошаговый план для смены профессии

Сигнатуры методов, немые стражи

Важно, чтобы сигнатура метода класса или интерфейса, который вы мокаете, соответствовала проверяемому исключению. Удостоверьтесь, что выбрасываемое исключение точно соответствует сигнатуре метода.

doAnswer() и willAnswer(), динамичный дуэт

Для управления запуском дополнительных действий в тестах используйте Mockito.doAnswer() или BDDMockito.given().willAnswer(). Эти методы помогут вам максимально точно контролировать выброс проверяемых исключений.

Контрольная точка: Правомочность исключения

При использовании Mockito.when().thenThrow() или doAnswer() обеспечьте, чтобы выбрасываемое исключение соответствовало контракту метода и не было отклонено библиотекой Mockito.

Выберите своего бойца: Непроверяемые исключения

Для увеличения гибкости можно использовать непроверяемые исключения, такие как RuntimeException или ArrayIndexOutOfBoundsException. Они способны обойти ограничения сигнатуры метода и гармонично работают в ваших тестах.

Основы Mockito

Синхронизируйте сигнатуру метода, который вы мокаете, с типом выбрасываемого проверяемого исключения. Это обеспечит безупречность ваших тестов и предотвратит появление ошибок при их выполнении.

BDD в Mockito, современная история

Если вы приверженец Поведенческо-ориентированной разработки (BDD), комбинирование BDDMockito.given() и willAnswer() позволит вам провести естественный диалог с вашими тестами и при этом точно эмулировать выброс проверяемых исключений.

Продвинутые методы

В сложных сценариях важно гарантировать безошибочное взаимодействие моков и алгоритма обработки исключений. Выясните, как именно ваш код реагирует на исключения, используя Mockito.verify().

Полезные материалы

  1. Mockito – mockito-core 5.10.0 javadoc — Официальная документация Mockito, которая станет вашим надёжным справочником.
  2. Эмуляция выброса исключений с помощью Mockito | Baeldung — Подход Baeldung к обработке исключений в Mockito, надёжный компас в мире моделирования поведения кода.
  3. Проверяемые и непроверяемые исключения в Java – GeeksforGeeks — Освойте отличия между проверяемыми и непроверяемыми исключениями в Java по материалам GeeksforGeeks.
  4. django – Mailchimp python wrapper gives error – no session – Stack Overflow — Обсуждение обработки исключений на форуме Stack Overflow, где можно найти полезные рекомендации.
  5. Урок: Исключения (Java™ Tutorials > Essential Java Classes) — Детальное изучение работы с исключениями по учебникам от Oracle.
  6. org.mockito.Mockito#when — Примеры использования метода when(), основного инструмента для тестирования в Mockito.
  7. Разработка на Java с управлением тестами – Второе издание | Packt — Не заблудитесь в лабиринте вариантов использования Mockito с этой обширной справочной книгой.