Junior
46
questionbank

Какие существуют виды тестовых объектов в контексте разработки программного обеспечения?

Получайте ответы на вопросы в реальном времени с Sobes Copilot
Ответ от нейросети sobes.tech

В контексте разработки ПО используются следующие виды тестовых объектов:

  1. Дублер (Test Double): Общий термин для любого вида заменителя реального объекта, используемого в тестах.

  2. Заглушка (Stub): Объект, который возвращает предопределенные значения в ответ на вызовы методов. Используется для управления поведением зависимостей тестируемого объекта.

    java
  3. Шпион (Spy): Частичный дублер. Оборачивает реальный объект, перехватывая вызовы методов для проверки, были ли они вызваны, сколько раз и с какими аргументами, но также может вызывать реальные методы.

    java
  4. Фальшивка (Fake): Объекты с работающей, но упрощенной реализацией. Например, in-memory база данных вместо реальной.

    java
  5. Макет (Mock): Объекты, которые не только имитируют поведение, но и содержат предустановленные ожидания относительно вызовов методов. Должны "знать", как именно их должны вызывать в ходе теста. Если вызовы не соответствуют ожиданиям, тест проваливается.

    java

Основное различие между ними заключается в цели использования и уровне сложности имитации:

ВидЦельПоведениеПроверка вызовов
StubПредоставить предопределенные ответыФиксированные ответыНет
SpyПроверить вызовы методов реального объектаИмитирует часть поведения реального объекта (+ реальные методы)Да
FakeУпростить зависимость с работающей логикойУпрощенная, но работающая логикаОбычно нет
MockПроверить взаимодействие между объектамиПредустановленные ожидания вызововДа