Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Apakah ada jebakan umum saat mengejek pengecualian dengan mockito


Apakah ada jebakan umum saat mengejek pengecualian dengan mockito


Saat menggunakan mockito untuk mengejek pengecualian, beberapa jebakan umum dapat membuat tes Anda kurang efektif atau lebih sulit dipertahankan. Berikut adalah beberapa jebakan ini dan cara menghindarinya:

1. Over-mocking **

Salah satu jebakan yang paling signifikan adalah berlebihan. Ini terjadi ketika Anda mengejek terlalu banyak ketergantungan, yang mengarah ke tes yang rapuh dan sulit dipertahankan. Over-mocking dapat menyebabkan tes lebih fokus pada tiruan daripada pada perilaku aktual sistem yang sedang diuji. Untuk menghindari hal ini, fokuslah hanya pada mengejek kolaborator yang memiliki perilaku non-sepele atau mereka yang interaksinya ingin Anda verifikasi. Gunakan contoh nyata untuk kolaborasi sederhana [3].

2. Pengecualian tidak valid **

Mockito memastikan bahwa pengecualian yang dilemparkan berlaku untuk metode stoked tertentu. Jika Anda mencoba melempar pengecualian yang tidak ada dalam daftar pengecualian yang diperiksa metode, Mockito akan mengeluh. Misalnya, jika suatu metode tidak mendeklarasikan `ioException`, mencoba mengejeknya untuk melempar` ioException` akan menghasilkan kesalahan [1]. Selalu pastikan bahwa pengecualian yang diejek berlaku untuk metode ini.

3. Menggunakan `thenthrow ()` dengan metode batal **

`when (). thenthrow ()` tidak dapat digunakan dengan metode batal karena tidak ada nilai pengembalian untuk mengejek. Sebaliknya, gunakan `dothrow ()` untuk metode batal. Mencampur metode ini secara tidak benar dapat menyebabkan kesalahan [2].

4. Kurangnya spesifisitas **

Saat mengejek pengecualian, penting untuk menjadi spesifik tentang pengecualian mana yang Anda uji. Hindari over-mocking dengan berfokus pada pengecualian yang relevan dengan skenario pengujian. Ini membantu menjaga tes tetap fokus dan dapat dipelihara [2] [8].

5. Penanganan eksekusi yang salah **

Pastikan kode aplikasi disiapkan untuk menangani pengecualian dengan benar, bahkan ketika diejek selama pengujian. Ini termasuk menguji logika untuk menangani pengecualian untuk memastikannya berperilaku seperti yang diharapkan [2].

6. Penggunaan pesan kesalahan yang berarti **

Saat mengejek pengecualian, sertakan pesan yang bermakna untuk membantu mendiagnosis masalah jika tes gagal. Praktik ini meningkatkan kejelasan dan efektivitas tes Anda [2].

7. Pengujian Pengujian Logika Penanganan **

Pastikan kode menangani pengecualian seperti yang diharapkan. Ini melibatkan memverifikasi bahwa aplikasi berperilaku dengan benar ketika pengecualian dilemparkan, yang sangat penting untuk membangun aplikasi yang tangguh [2].

8. Mengatur ulang dan membersihkan tiruan **

Mockito menyediakan fitur seperti `reset ()` dan `clearInvocations ()` untuk mengelola tiruan. Namun, ini harus digunakan dengan hemat. Mengatur ulang tiruan harus dilakukan hanya dalam kasus yang jarang terjadi, seperti ketika tiruan disuntikkan oleh wadah dan tidak dapat diciptakan kembali untuk setiap tes. Doa kliring dapat bermanfaat jika menciptakan kembali tiruan akan menyebabkan overhead yang signifikan [1].

Dengan menyadari jebakan ini dan mengikuti praktik terbaik, Anda dapat secara efektif menggunakan mockito untuk mengejek pengecualian dan memastikan tes Anda kuat dan dapat dipertahankan.

Kutipan:
[1] https://www.toptal.com/java/a-guide-to-everyday-mockito
[2] https://www.browserstack.com/guide/mockito-throw-exception
[3] https://javanexus.com/blog/avoiding-mockito-testing-pitfalls
[4] https://stackoverflow.com/questions/9186604/mockito-exception-when-requires-an-Argument-which-has-to-a-a-method-on-on
[5] https://stackoverflow.com/questions/22540108/best-practices-with-mockito
[6] https://stackoverflow.com/questions/52512548/mock-method-to-do-not-throw-an-exception/52514628
[7] https://contributors.scala-lang.org/t/mockito-testing-nulls-and-exceptions/3915
[8] https://www.janbasktraining.com/community/java/throw-checked-exceptions-from-mocks-with-mockito