Mengatur ulang mocks di mockito adalah fitur yang memungkinkan Anda menggunakan kembali objek mogok dengan membersihkan rintisan dan interaksi mereka. Namun, menggunakan `reset ()` umumnya berkecil hati kecuali benar -benar diperlukan, karena dapat menunjukkan tes yang tidak terstruktur dengan buruk. Berikut adalah beberapa praktik terbaik untuk mengatur ulang mocks di mockito:
Memahami kapan harus menggunakan `reset ()`
-Hindari menggunakan `reset ()`: Alasan utama `reset ()` ada adalah untuk mendukung tiruan yang disuntikkan wadah, seperti yang digunakan dalam kode lama atau antarmuka pihak ketiga. Dalam kebanyakan kasus, terutama dengan kode yang digerakkan oleh tes yang dirancang dengan baik, Anda harus menghindari penggunaan `reset ()` dan sebaliknya fokus pada pembuatan metode pengujian kecil yang terfokus [2] [4].
- Bau kode: Jika Anda perlu menggunakan `reset ()` dalam metode pengujian, itu mungkin merupakan tanda bahwa tes Anda terlalu kompleks atau menutupi terlalu banyak skenario. Ini bisa menunjukkan perlunya refactor tes Anda atau kode yang diuji [2].
alternatif untuk `reset ()`
- Buat ejek baru: Alih -alih mengatur ulang mocks, pertimbangkan untuk membuat instance tiruan baru untuk setiap metode pengujian. Pendekatan ini memastikan bahwa setiap tes dimulai dengan papan tulis yang bersih, mengurangi risiko interaksi dari tes sebelumnya yang mempengaruhi yang saat ini [4].
- Gunakan `clearInvocations ()`: jika Anda hanya perlu menghapus riwayat doa (mis., Untuk memverifikasi interaksi tanpa mempengaruhi stubbing), gunakan `mockito.clearinVocations ()`. Metode ini menghilangkan riwayat doa tanpa mengatur ulang stub, yang dapat berguna dalam skenario tertentu [4].
Praktik terbaik untuk mengatur ulang mocks
- Reset setelah setiap tes: Jika Anda harus mengatur ulang mocks, lakukan setelah setiap metode tes menggunakan anotasi `@setelah` di junit atau` aftereach () `di scalatest. Ini memastikan bahwa setiap tes dimulai dengan keadaan tiruan yang bersih [3] [10].
- Hindari mengatur ulang sebelum tes: Mengatur ulang mocks sebelum setiap tes dapat menyebabkan kebingungan tentang keadaan apa yang terjadi pada awal tes. Umumnya lebih jelas untuk membuat tiruan baru atau mengatur ulang setelah tes [10].
- Gunakan fitur kerangka kerja: Dalam kerangka kerja seperti Spring, menggunakan anotasi seperti `@mockbean` dapat secara otomatis menangani pengaturan ulang tiruan setelah setiap tes, menghilangkan kebutuhan untuk reset manual [10].
Kesimpulan
Sementara Mockito menyediakan metode `reset ()` untuk kasus penggunaan tertentu, umumnya disarankan untuk menghindari penggunaannya demi desain uji yang lebih bersih dan lebih fokus. Dengan membuat tiruan baru untuk setiap tes atau menggunakan fitur kerangka kerja untuk mengelola keadaan tiruan, Anda dapat memastikan tes yang kuat dan dapat dipelihara tanpa perlu reset manual.
Kutipan:[1] https://www.tutorialspoint.com/mockito/mockito_resetting_mock.htm
[2] https://site.mockito.org/javadoc/current/org/mockito/mockito.html
[3] https://twitter.github.io/finatra/user-guide/testing/mocks.html
[4] https://softwareEngineering.stackexchange.com/questions/188299/is-this-an-apprepropent-use-of-mockitos-resset-method
[5] https://github.com/mockito/mockito-kotlin/issues/513
[6] https://symflower.com/en/company/blog/2024/how-to-do-mocking-spring-boot/
[7] https://www.lambdatest.com/automation-testing-advisor/selenium/methods/org.mockito.mockito.reset
[8] https://github.com/mockito/mockito/issues/183
[9] https://www.toptal.com/java/a-guide-to-everyday-mockito
[10] https://stackoverflow.com/questions/18164123/how-to-tlean-vocks-in-spring-tests-when-using-mockito