Тесты Пообщаться с GPT Протестировать код
Программирование Аналитика Дизайн Маркетинг Управление проектами
07 Дек 2023
2 мин
2851

Разница между @Mock и @InjectMocks в Mockito

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

В мире Java и unit-тестирования, особенно при использовании Mockito, часто возникает вопрос о различиях между аннотациями @Mock и @InjectMocks. Чтобы разобраться в

В мире Java и unit-тестирования, особенно при использовании Mockito, часто возникает вопрос о различиях между аннотациями @Mock и @InjectMocks. Чтобы разобраться в этом вопросе, необходимо понять, что каждый из этих элементов делает по отдельности.

Разработка на Java — востребованное направление, такие специалисты будут нужны на рынке еще долго. На курсе «Java-разработчик» от Skypro освоить профессию можно с нуля за 11 месяцев, даже если вы гуманитарий и ничего не знаете об IT. Программа составлена от простого к сложному и адаптирована для новичков. Преподаватели — практикующие специалисты из крупных компаний: «Сбер», «Самокат» и других.

@Mock

Аннотация @Mock используется для создания и внедрения макета или стаба (mock object). Макет — это объект, который имитирует реальное поведение объекта, но в упрощенной или контролируемой форме. Это очень полезно при тестировании, поскольку позволяет изолировать код, который тестируется, от остальной системы.

Пример использования @Mock:

@Mock
List mockedList;

В этом примере создается макет объекта типа List. Этот макет можно использовать в тестах, чтобы имитировать реальное поведение списка.

@InjectMocks

Аннотация @InjectMocks используется для создания экземпляра класса и внедрения в него макетов, созданных с помощью аннотации @Mock. Это позволяет легко интегрировать макеты в тестируемый класс.

Пример использования @InjectMocks:

@Mock
List mockedList;

@InjectMocks
ArrayList realList;

В этом примере создается реальный объект ArrayList и внедряется в него макет списка. Это позволяет тестировать реальный объект с использованием макета.

В Skypro на курсе «Java-разработчик» вы научитесь писать программы для игр и приложений, освоите все нужные инструменты: Git, GitHub, Docker, Swagger, PostgreSQL и другие. Потренируетесь под руководством опытных наставников и соберете сильное портфолио. На курсе действует гарантия трудоустройства: поможем вам найти работу или вернем деньги за курс.

Вывод

Таким образом, основное различие между @Mock и @InjectMocks заключается в том, что @Mock используется для создания макета, а @InjectMocks — для внедрения этих макетов в реальный объект. Оба этих элемента играют важную роль в unit-тестировании и помогают создавать более надежные и изолированные тесты.

Добавить комментарий