Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Jaká jsou omezení používání MOCKITO Argument Matchers


Jaká jsou omezení používání MOCKITO Argument Matchers


Matchito argumenty Matchers jsou výkonné nástroje používané při testování jednotek k flexibilně specifikaci argumentů při nastavování simulovačů. Přicházejí však s několika omezeními:

1. Kontext použití: Argumentové porovnávače lze použít pouze v kontextu strnivovacích nebo ověřujících metod. Nelze je použít při volání metod na testovacím objektu. Například při volání metody na skutečný objekt nemůžete použít `anyString ()`; Místo toho byste měli použít konkrétní hodnotu [1] [5].

2. konzistence napříč argumenty: Při použití argumentu pro jeden argument musí všechny ostatní argumenty také používat porovnávače. Ve stejném volání metody nemůžete smíchat porovnávače s konkrétními hodnotami pro různé argumenty. Toto je běžný zdroj „InvaliduseofMatcherSexception“ [7] [8].

3. Omezení zesměšňování: Mockito se nemůže zesměšňovat určité metody, jako je `equals ()`, `hashcode ()` nebo konečné metody. Zatímco porovnávače argumentů mohou být použity metodami, které mohou být zesměšňovány, nerozšiřují schopnost zesměšňovat tyto omezené metody [3].

4. argumenty typy zápasů: Mockito poskytuje celou řadu vestavěných argumentových porovnávačů (např. `Anyint ()`, `AnyString ()`, `isNull ()`), ale musíte pro argument vybrat správný typ. Například použití `libovolný ()` s primitivním typem nemusí fungovat podle očekávání; Místo toho použijte konkrétnější porovnávač jako `Anyboolean ()` pro booleovské parametry [7].

5. Vlastní argumenty Matchers: Zatímco Mockito vám umožňuje vytvářet vlastní porovnávače pomocí metody „argthat ()“, implementace rozhraní `argumentMatcher` vyžaduje pečlivé zvážení, aby se zajistilo, že se porovnávač chová podle očekávání v různých scénářích [2] [4].

6. Integrace s jinými knihovnami: Při používání Mockito s jinými knihovnami, jako je Hamcrest, zajistěte, aby byla integrace správně zpracována. Například, Sonarqube může označit určitá použití `argthat ()` s Hamcrest Matchers jako nesprávné, i když jsou platné [4].

Stručně řečeno, zatímco MOCKITO argumenty jsou všestranní, jejich použití je omezeno na konkrétní kontexty a vyžaduje konzistenci napříč argumenty metod. Kromě toho nepřekonávají základní omezení Mockito ohledně určitých metod nebo tříd.

Citace:
[1] https://groups.google.com/g/mockito/c/ul9ymczqnky
[2] https://kenkousen.substack.com/p/tales-from-the-jar-side-amockito
[3] https://ioflood.com/blog/mockito/
[4] https://community.sonarsource.com/t/problem-with-java-rule-s6073-mockito-argument-maatchers- in-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-machers
[8] https://www.baeldung.com/mockito-argument-machers