logo

Методи Mockito

Фреймворк Mockito надає різноманітні методи, такі як mock(), verify(), when() тощо, які використовуються для тестування програм Java. Використання цих попередньо визначених методів робить тестування дуже легким.

Короткий опис методів Mockito наведено нижче:

jbutton

Метод Mockito mock().

Він використовується для створення макетів об’єктів певного класу або інтерфейсу. Mockito містить п'ять макет() методи з різними аргументами. Якщо ми нічого не призначили mocks, вони повертатимуть значення за замовчуванням. Усі п’ять методів виконують однакову функцію знущання над об’єктами.

Нижче наведено методи mock() з різними параметрами:

    метод mock() із класом:Він використовується для створення макетів об'єктів конкретного класу або інтерфейсу. Він приймає клас або назву інтерфейсу як параметр.
    Синтаксис: макет (клас classToMock)метод mock() із відповіддю:Він використовується для створення макетів об’єктів класу або інтерфейсу за допомогою певної процедури. Це просунутий макетний метод, який можна використовувати під час роботи із застарілими системами. Він приймає Answer як параметр разом із назвою класу або інтерфейсу. Відповідь — це перелік попередньо налаштованих пробних відповідей.
    Синтаксис: mock(Class classToMock, Answer defaultAnswer)метод mock() з MockSettings:Використовується для створення макетів об'єктів з деякими нестандартними налаштуваннями. Він приймає MockSettings як додатковий параметр налаштування разом із назвою класу чи інтерфейсу. MockSettings дозволяє створювати макетні об’єкти з додатковими налаштуваннями.
    Синтаксис: mock(Class classToMock, MockSettings mockSettings)метод mock() з ReturnValues:Це дозволяє створювати макетні об’єкти заданого класу чи інтерфейсу. Тепер він застарів, оскільки ReturnValues ​​замінено на Answer.
    Синтаксис: mock(Class classToMock, ReturnValues ​​returnValues)метод mock() із String:Він використовується для створення макетів об’єктів шляхом вказівки макетів імен. Під час налагодження іменування фіктивних об’єктів може бути корисним, тоді як використання з великим і складним кодом є поганим вибором.
    Синтаксис: mock(Class classToMock, String name)

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

 ToDoService doService = mock(ToDoService.class); 

Метод Mockito when().

Це дозволяє використовувати методи заглушки. Його слід використовувати, коли ми хочемо макетувати, щоб повернути конкретні значення під час виклику певних методів. Простіше кажучи, ' Коли викликається метод XYZ(), потім повернути ABC.' Здебільшого використовується, коли є певна умова для виконання.

Синтаксис: when(T methodCall)

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

 when(mock.someCode ()).thenReturn(5); 

У наведеному вище коді thenReturn() в основному використовується з коли() метод.

Метод Mockito verify().

The перевірити() метод використовується, щоб перевірити, чи викликаються деякі вказані методи чи ні. Простіше кажучи, він перевіряє певну поведінку, яка мала місце під час тесту. Він використовується в нижній частині коду тестування, щоб переконатися, що визначені методи викликаються.

Фреймворк Mockito відстежує всі виклики методів із їхніми параметрами для мокінгу об’єктів. Після насмішки ми можемо перевірити, чи виконуються визначені умови, використовуючи метод verify(). Цей тип тестування іноді називають поведінкове тестування. Він перевіряє, чи викликається метод із правильними параметрами, замість перевірки результату виклику методу.

Метод verify() також використовується для перевірки кількості викликів. Тож ми можемо перевірити точну кількість викликів за допомогою метод разів, метод принаймні один раз, і щонайбільше метод за висміяний метод.

У класі Mockito є два типи методів verify(), наведені нижче:

    метод verify():Він перевіряє, що певна поведінка мала місце один раз.
    Синтаксис: перевірити (T mock)метод verify() із VerificationMode:Він перевіряє, що певна поведінка мала місце принаймні один раз, точну кількість разів або ніколи.
    Синтаксис: перевірити (T mock, режим VerificationMode)

Метод Mockito spy().

Mockito надає метод часткового імітування об’єкта, який відомий як шпигун метод. Під час використання методу шпигунства існує реальний об’єкт, і для цього реального об’єкта створюються шпигуни або заглушки. Якщо ми не заглушимо метод за допомогою spy, він викличе справжню поведінку методу. Основна функція методу spy() полягає в тому, що він замінює конкретні методи реального об’єкта. Однією з функцій методу spy() є перевірка виклику певного методу.

У класі Mockito доступні два типи методів spy():

    метод spy():Це створює шпигуна реального об'єкта. Шпигунський метод викликає справжні методи, якщо вони не заглушені. Ми повинні використовувати справжніх шпигунів обережно та час від часу, наприклад, коли маємо справу зі застарілим кодом.
    Синтаксис: шпигун (T об'єкт)метод spy() з класом:Він створює шпигунський об’єкт на основі класу замість об’єкта. Метод spy(T object) особливо корисний для спостереження за абстрактними класами, оскільки їх не можна створити.
    Синтаксис: шпигун (Клас classToSpy)

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

 List spyArrayList = spy(ArrayList.class); 

Метод Mockito reset().

Метод Mockito reset() використовується для скидання макетів. В основному використовується для роботи з макетами, введеними в контейнер. Зазвичай метод reset() призводить до тривалого коду та поганих тестів. Краще створювати нові макети, а не використовувати метод reset(). Ось чому метод reset() рідко використовується в тестуванні.

Сигнатура методу reset() така:

веб-сайт, як coomeet
 public static void reset(T ... mocks) { MOCKITO_CORE.reset(mocks); } 

Метод Mockito verifyNoMoreInteractions().

Він використовується для перевірки того, що будь-який із наведених макетів має неперевірені взаємодії. Ми можемо використати цей метод після перевірки всіх макетів, щоб переконатися, що в них не було викликано нічого іншого. Він також виявляє неперевірені виклики, які відбуваються перед тестовим методом, наприклад, у методі setup(), @Before або конструкторі. Це необов’язковий метод, і нам не потрібно використовувати його в кожному тесті.

Сигнатура методу verifyNoMoreInteractions() така:

 public static void verifyNoMoreInteractions(Object... mocks) { MOCKITO_CORE.verifyNoMoreInteractions(mocks); } 

Метод Mockito verifyZeroInteractions().

Він перевіряє, чи не відбулася взаємодія з даними макетами. Він також виявляє виклики, які відбулися перед тестовим методом, наприклад, у методі setup(), @Before або конструкторі.

Сигнатура методу verifyZeroInteractions() така:

 public static void verifyZeroInteractions(Object... mocks) { MOCKITO_CORE.verifyNoMoreInteractions(mocks); } 

Метод Mockito doThrow().

Він використовується, коли заглушується метод void для створення винятку. Він створює новий екземпляр винятку для кожного виклику методу. У класі Mockito доступні два типи методів doThrow() з різними параметрами, як показано нижче:

    Метод doThrow() із Throwable:Цей метод використовується, коли ми хочемо заглушити метод void із винятком. Синтаксис: doThrow (можна кинути, щоб бути кинутим)
    Сигнатура методу doThrow() така:
 public static Stubber doThrow(Throwable toBeThrown) { return MOCKITO_CORE.doAnswer(new ThrowsException(toBeThrown)); } 
    Метод doThrow() із класом:Цей метод використовується, коли ми хочемо заглушити метод void, щоб створити виняток зазначеного класу.
    Синтаксис: doThrow(Клас toBeThrown)
    Сигнатура методу doThrow() така:
 public static Stubber doThrow(Class toBeThrown) { return MOCKITO_CORE.doAnswer(new ThrowsExceptionClass(toBeThrown)); } 

Метод Mockito doCallRealMethod().

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

Сигнатура методу doCallRealMethod() така:

 public static Stubber doCallRealMethod() { return MOCKITO_CORE.doAnswer(new CallsRealMethods()); } 

Метод Mockito doAnswer().

Він використовується, коли ми хочемо заглушити метод void із загальним типом відповіді. Сигнатура методу doAnswer() така:

 public static Stubber doAnswer(Answer answer) { return MOCKITO_CORE.doAnswer(answer); } 

Метод Mockito doNothing().

Він використовується для налаштування методів void, щоб нічого не робити. Метод doNothing() використовується в рідкісних ситуаціях. За замовчуванням методи void на макетних екземплярах нічого не роблять, тобто завдання не виконуються.

Сигнатура методу doNothing() така:

список релігій
 public static Stubber doNothing() { return MOCKITO_CORE.doAnswer(new DoesNothing()); } 

Метод Mockito doReturn().

Він використовується в тих рідкісних випадках, коли ми не можемо використовувати Mockito.when(object). Метод Mockito.when(object) завжди пропонується для заглушки, оскільки він є безпечним для типу аргументу та більш читабельним порівняно з методом doReturn().

Сигнатура методу doReturn() така:

 public static Stubber doReturn(Object toBeReturned) { return MOCKITO_CORE.doAnswer(new Returns(toBeReturned)); } 

Метод Mockito inOrder().

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

Сигнатура методу Mockito.inOrder() така:

 public static InOrder inOrder(Object... mocks) { return MOCKITO_CORE.inOrder(mocks); } 

Метод Mockito ignoreStubs().

Він використовується для ігнорування заглушених методів заданих макетів для перевірки. Це корисно з методами verifyNoMoreInteraction() або verification inOrder(). Це також допомагає уникнути зайвої перевірки закритих викликів.

Сигнатура методу ignoreStubs() така:

 public static Object[] ignoreStubs(Object... mocks) { return MOCKITO_CORE.ignoreStubs(mocks); } 

Метод Mockito times().

Він використовується для перевірки точної кількості викликів методів, що означає, що він оголошує, скільки разів метод викликається. Сигнатура методу times() така:

 public static VerificationMode times(int wantedNumberOfInvocations) { return VerificationModeFactory.times(wantedNumberOfInvocations); } 

Метод Mockito never().

Він використовується для перевірки того, що взаємодія не відбулася. Сигнатура методу never() така:

 public static VerificationMode never() { return times(0); } 

Метод Mockito atLeastOnce().

Він використовується для перевірки виклику принаймні один раз, тобто метод має бути викликаний принаймні один раз.

Сигнатура методу atLeastOnce() така:

 public static VerificationMode atLeastOnce() { return VerificationModeFactory.atLeastOnce(); } 

Метод Mockito atLeast().

Він використовується для перевірки виклику принаймні x кількість разів. Наприклад, задано atLeast(3) означає, що метод викличеться мінімум тричі.

Сигнатура методу atLeast() така:

 public static VerificationMode atLeast(int minNumberOfInvocations) { return VerificationModeFactory.atLeast(minNumberOfInvocations); } 

Метод Mockito atMost().

Він використовується для перевірки виклику щонайбільше x кількість разів. Наприклад, задано atMost(3) означає, що метод викличеться максимум три рази.

Сигнатура методу atMost() така:

 public static VerificationMode atMost(int maxNumberOfInvocations) { return VerificationModeFactory.atMost(maxNumberOfInvocations); } 

Метод Mockito calls().

Це дозволяє нежадібну перевірку порядку. Його можна використовувати лише з методом перевірки inOrder(). Наприклад, inOrder.verify(mock, calls(3)).xyzMethod('...');

Сигнатура методу calls() така:

 public static VerificationMode calls( int wantedNumberOfInvocations ){ return VerificationModeFactory.calls( wantedNumberOfInvocations ); } 

Метод Mockito only().

Він перевіряє, чи заданий метод був єдиним викликаним методом. Сигнатура методу only() така:

клас математики java
 public static VerificationMode only() { return VerificationModeFactory.only(); } 

Метод Mockito timeout().

Це дозволяє Mockito виконувати перевірку з тайм-аутом. Він наказує верифікації чекати певний проміжок часу для певної взаємодії, а не негайно завершувати роботу. Це може бути корисним для тестування в існуючих ситуаціях.

Метод timeout() відрізняється від методу after() тим, що метод after() очікує протягом повного періоду, якщо остаточний результат не оголошено, тоді як метод timeout() зупиниться, щойно пройде перевірка. Його рідко використовують у тестуванні.

Сигнатура методу timeout() така:

 public static VerificationWithTimeout timeout(long millis) { return new Timeout(millis, VerificationModeFactory.times(1)); } 

Метод Mockito after().

Це дозволяє Mockito перевіряти протягом певного періоду часу. Ми вже обговорювали, що метод after() відрізняється від методу timeout().

Сигнатура методу after() така:

 public static VerificationAfterDelay after(long millis) { return new After(millis, VerificationModeFactory.times(1)); } 

Метод Mockito validateMockitoUsage().

Він використовується для явної перевірки стану фреймворка, щоб виявити недійсне використання фреймворку Mockito. Це додаткова функція Mockito, оскільки вона постійно перевіряє використання. І вбудований бігун (MockitoJUnitRunner), і правило (MockitoRule) викликають метод validateMockitoUsage() після кожного тестового методу.

Сигнатура методу validateMockitoUsage() така:

 public static void validateMockitoUsage() { MOCKITO_CORE.validateMockitoUsage(); } 

Метод Mockito withSettings().

Використовується для створення макетів із додатковими налаштуваннями макетів. Його слід час від часу використовувати під час тестування. Замість використання методу withSettings() створюйте прості тести за допомогою простих макетів. Основні причини використання MockSettings:

  • Використовуючи MockSetting, ми можемо легко додавати інші макетні налаштування, коли це необхідно.
  • Він поєднує різні макетні налаштування, не псуючи код.

Сигнатура методу withSettings() така:

 public static MockSettings withSettings() { return new MockSettingsImpl().defaultAnswer(RETURNS_DEFAULTS); }