Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Які обмеження використання відповідних аргументів Mockito


Які обмеження використання відповідних аргументів Mockito


Матці -аргументи MACKITO - це потужні інструменти, що використовуються в тестуванні одиниць, щоб гнучко вказати аргументи під час налаштування макетів. Однак вони мають кілька обмежень:

1. Контекст використання: відповідні аргументи можуть використовуватися лише в контексті методів стул або перевірки. Вони не можуть бути використані під час виклику методів на тестованому об'єкті. Наприклад, ви не можете використовувати `rainString ()` під час виклику методу на реальному об'єкті; Натомість слід використовувати конкретне значення [1] [5].

2. Послідовність аргументів: При використанні відповідного аргументу для одного аргументу всі інші аргументи також повинні використовувати відповідники. Ви не можете змішати відповідність з конкретними значеннями для різних аргументів в одному виклику методу. Це загальне джерело `invaliduseofmatchersexception` [7] [8].

3. Змішані обмеження: Mockito не може знущатися над певними методами, такими як `equals ()`, `hashcode ()` або остаточні методи. Хоча відповідні аргументи можуть використовуватися з методами, які можна знущатися, вони не розширюють можливості знущатися над цими обмеженими методами [3].

4. Типи відповідних аргументів: Mockito забезпечує різноманітні вбудовані відповідні аргументи (наприклад, `` anyint () `,` rah arestring () `,` isnull () `), але ви повинні вибрати правильний тип аргументу. Наприклад, використання `будь -якого ()` з примітивним типом може не працювати, як очікувалося; Натомість використовуйте більш конкретний відповідник, наприклад `anyboolean ()` для булевих параметрів [7].

5. Спеціальні аргументи відповідальності: Хоча Mockito дозволяє створювати спеціальні відповідники за допомогою методу `argthat ()`, втілення інтерфейсу `argumentMatcher 'вимагає ретельного розгляду, щоб переконатися, що відповідник поводиться, як очікувалося в різних сценаріях [2] [4].

6. Інтеграція з іншими бібліотеками: при використанні Mockito з іншими бібліотеками, такими як Hamcrest, переконайтесь, що інтеграція належним чином обробляється. Наприклад, Sonarqube може позначити певне використання `argthat ()` з відповідними збігачами Hamcrest як невірними, навіть якщо вони дійсні [4].

Підсумовуючи це, хоча відповідні аргументи Mockito є універсальними, їх використання обмежується конкретним контекстам і вимагає узгодженості в різних методах аргументів. Крім того, вони не долають основних обмежень Мокто щодо певних методів чи класів.

Цитати:
[1] https://groups.google.com/g/mockito/c/ul9ymczqnky
[2] https://kenkousen.substack.com/p/tales-from-the-jar-side-a-mockito
[3] https://ioflood.com/blog/mockito/
[4] https://community.sonarsource.com/t/problem-with-java-rule-s6073-mockito-argument-matchers-case-of-usage-mockitohamcrest-adapter/38429
[5] https://groups.google.com/g/mockito/c/zi6pcqudtco
[6] https://www.lambdatest.com/automation-testing-advisor/selenium/methods/org.mockito.argumentmatchers.isnull
[7] https://stackoverflow.com/questions/16458136/mockito-invalid-use-of-argument-matchers
[8] https://www.baeldung.com/mockito-argument-matchers