logo

Макет проти заглушки проти шпигуна

макет

Mocks — це об’єкти, які зберігають виклики методів. Його називають динамічними оболонками для залежностей, які використовуються в тестах. Він використовується для запису та перевірки взаємодії між класами Java. Макет відомий як найпотужніша та найгнучкіша версія тесту дублів. Ми використовуємо метод для глузування називається макет() .

Основна функція використання імітацій полягає в тому, що вона дає повний контроль над поведінкою імітованих об’єктів. Імітаційні об'єкти зазвичай використовуються для перевірка поведінки . Термін поведінка означає перевірку правильних методів і шляхів, які застосовуються до об’єктів.

centos проти redhat

Макети здебільшого створюються за допомогою бібліотеки або фреймворку для моделювання, наприклад Mockito, JMock і EasyMock. Він використовується для тестування великого набору тестів, де заглушок недостатньо. Однією з важливих функцій mock є те, що ми можемо перевірити, скільки разів викликається даний метод.

Наступний фрагмент коду показує, як використовувати mock().

 ToDoService doService = mock(ToDoService.class); 

заглушка

Заглушки — це об’єкти, які містять попередньо визначені дані та використовують їх для надання відповідей під час тестування. Іншими словами, заглушка - це об'єкт, який нагадує реальний об'єкт з мінімальною кількістю методів, необхідних для тесту. Заглушки використовуються, коли ми не хочемо використовувати об’єкти, які б давали відповідь з реальними даними. Найлегшою називають заглушку, а найстатичнішою версією тесту є дублі.

Основними функціями заглушок є:

алгоритм сортування купи
  • Він завжди повертає попередньо визначений вихід незалежно від введення.
  • Його можна використовувати для схожості на об’єкти бази даних.
  • Заглушки використовуються для зменшення складності, яка виникає під час створення реальних об'єктів. В основному вони використовуються для виконання державна перевірка .

Шпигун

Шпигуни відомі як частково макет об'єктів . Це означає, що шпигун створює частковий об’єкт або наполовину манекен справжнього об’єкта шляхом заглушки або шпигування справжніх об’єктів. Під час шпигування справжній об’єкт залишається незмінним, і ми лише спостерігаємо за деякими його методами. Іншими словами, ми беремо існуючий (реальний) об'єкт і замінити або шпигун лише деякі його методи.

Шпигуни корисні, коли у нас є величезний клас, повний методів, і ми хочемо висміяти певні методи. У цьому сценарії ми повинні віддати перевагу використанню шпигунів, а не макетів і заглушок. Він викликає справжню поведінку методу, якщо методи не заглушені.

У Mockito метод spy() використовується для створення шпигунських об’єктів. Це дозволяє нам викликати звичайні методи реального об'єкта. У наведеному нижче фрагменті коду показано, як використовувати метод spy().

 List spyArrayList = spy(ArrayList.class); 

Різниця між Stub і Mock

Параметри заглушка макет
Джерело даних Джерело даних заглушок жорстко закодовано. Зазвичай він тісно пов’язаний із набором тестів. Дані про макетах встановлюються тестами.
Створений Заглушки зазвичай пишуться від руки, а деякі створюються за допомогою інструментів. Макети зазвичай створюються за допомогою бібліотек сторонніх розробників, таких як Mockito, JMock і WireMock.
Використання Заглушки в основному використовуються для простих наборів тестів. Макети в основному використовуються для великих наборів тестів.
Графічний інтерфейс користувача (GUI) Заглушки не мають графічного інтерфейсу. Mocks мають графічний інтерфейс.

Нижче наведено деякі відмінності між макетом і шпигуном:

Параметри макет Шпигун
Використання Макети використовуються для створення повністю фіктивних або фіктивних об’єктів. В основному використовується у великих наборах тестів. Шпигуни використовуються для створення часткових або напівмакетів об'єктів. Як і макет, шпигуни також використовуються у великих наборах тестів.
Поведінка за замовчуванням Під час використання фіктивних об’єктів поведінка методів за замовчуванням (якщо вони не заглушені) — нічого не робити (нічого не виконувати). Під час використання шпигунських об’єктів поведінка методів за замовчуванням (якщо вони не закріплені) є справжньою поведінкою методу.

У наших попередніх уроках ми обговорювали деякі приклади заглушки, глузування та шпигунства. Щоб краще зрозуміти різницю між заглушкою, глузуванням і шпигунством, перегляньте приклади.