Pencocokan argumen mockito adalah alat yang kuat yang digunakan dalam pengujian unit untuk secara fleksibel menentukan argumen saat menyiapkan tiruan. Namun, mereka datang dengan beberapa batasan:
1. Konteks Penggunaan: Pencocokan argumen hanya dapat digunakan dalam konteks metode -metode yang menanggalkan atau memverifikasi. Mereka tidak dapat digunakan saat memanggil metode pada objek yang diuji. Misalnya, Anda tidak dapat menggunakan `anystring ()` saat memanggil metode pada objek nyata; Sebaliknya, Anda harus menggunakan nilai konkret [1] [5].
2. Konsistensi lintas argumen: Saat menggunakan pencocokan argumen untuk satu argumen, semua argumen lainnya juga harus menggunakan pencocokan. Anda tidak dapat mencampur pencocokan dengan nilai konkret untuk argumen yang berbeda dalam panggilan metode yang sama. Ini adalah sumber umum dari `invaliduseOfMatchersException` [7] [8].
3. Keterbatasan Mocking: Mockito tidak dapat mengejek metode tertentu seperti `Equals ()`, `hashcode ()`, atau metode akhir. Sementara pencocokan argumen dapat digunakan dengan metode yang dapat diejek, mereka tidak memperluas kemampuan untuk mengejek metode terbatas ini [3].
4. Jenis Pencocokan Argumen: Mockito menyediakan berbagai pencocokan argumen bawaan (mis., `Anyint ()`, `anystring ()`, `isnull ()`), tetapi Anda harus memilih jenis yang benar untuk argumen. Misalnya, menggunakan `any ()` dengan tipe primitif mungkin tidak berfungsi seperti yang diharapkan; Sebagai gantinya, gunakan pencocokan yang lebih spesifik seperti `anyboolean ()` untuk parameter boolean [7].
5. Pencocokan Argumen Kustom: Sementara Mockito memungkinkan Anda untuk membuat pencocokan khusus menggunakan metode `argthat ()`, mengimplementasikan antarmuka `ArgumentMatcher` memerlukan pertimbangan yang cermat untuk memastikan pencocokan berperilaku seperti yang diharapkan dalam skenario yang berbeda [2] [4].
6. Integrasi dengan perpustakaan lain: Saat menggunakan mockito dengan perpustakaan lain seperti Hamcrest, pastikan bahwa integrasi ditangani dengan benar. Misalnya, Sonarquce mungkin menandai penggunaan tertentu dari `argthat ()` dengan pencocokan Hamcrest sebagai salah, bahkan jika mereka valid [4].
Singkatnya, sementara pencocokan argumen mockito serbaguna, penggunaannya terbatas pada konteks tertentu dan membutuhkan konsistensi di seluruh argumen metode. Selain itu, mereka tidak mengatasi keterbatasan mendasar mockito mengenai metode atau kelas tertentu.
Kutipan:[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-chatchers-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-satchers
[8] https://www.baeldung.com/mockito-argument-shatchers