Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Quali sono i limiti dell'uso di argomenti di mockito


Quali sono i limiti dell'uso di argomenti di mockito


Gli argomenti di mockito sono potenti strumenti utilizzati nei test unitari per specificare in modo flessibile gli argomenti quando si impostano le derche. Tuttavia, hanno diversi limiti:

1. Contesto di utilizzo: gli argomenti possono essere utilizzati solo nel contesto di metodi di torreggio o verifica. Non possono essere usati quando si chiama metodi sull'oggetto in prova. Ad esempio, non è possibile utilizzare `anystring ()` quando si chiama un metodo su un oggetto reale; Invece, dovresti usare un valore concreto [1] [5].

2. Coerenza tra gli argomenti: quando si utilizza un matcher di argomenti per un argomento, tutti gli altri argomenti devono anche usare i matcher. Non è possibile mescolare i matcher con valori concreti per argomenti diversi nella stessa chiamata del metodo. Questa è una fonte comune di `invaliduseofmatchersException` [7] [8].

3. Limitazioni di beffardo: mockito non può deridere alcuni metodi come `equals ()`, `hashcode ()` o metodi finali. Mentre i matcher di argomenti possono essere usati con metodi che possono essere derisi, non estendono la capacità di deridere questi metodi limitati [3].

4. Tipi di matcher argomentazione: mockito fornisce una varietà di matcher di argomenti integrati (ad esempio, `anyint ()`, `anystring ()`, `isNull ()`), ma è necessario scegliere il tipo corretto per l'argomento. Ad esempio, l'uso di `qualsiasi ()` con un tipo primitivo potrebbe non funzionare come previsto; Invece, usa un matcher più specifico come `anyboolean ()` per i parametri booleani [7].

5. Matcher di argomenti personalizzati: mentre Mockito consente di creare matcher personalizzati usando il metodo `arghat ()`, implementando l'interfaccia `ArgumentMatcher` richiede un'attenta considerazione per garantire che il matcher si comporti come previsto in diversi scenari [2] [4].

6. Integrazione con altre librerie: quando si utilizza Mockito con altre librerie come Hamcrest, assicurarsi che l'integrazione sia gestita correttamente. Ad esempio, Sonarqube potrebbe contrassegnare alcuni usi di `arghat ()` con i matcher Hamcrest come errati, anche se sono validi [4].

In sintesi, mentre gli argomenti di mockito sono versatili, il loro utilizzo è limitato a contesti specifici e richiede coerenza tra gli argomenti del metodo. Inoltre, non superano le limitazioni fondamentali di Mockito riguardo a determinati metodi o classi.

Citazioni:
[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-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-matchers
[8] https://www.baeldung.com/mockito-argument matchers