Metode mockito `reset ()` adalah fitur yang memungkinkan Anda untuk mengatur ulang objek tiruan sehingga dapat digunakan kembali. Namun, penggunaannya umumnya tidak disarankan oleh pengembang dan pengguna mockito, karena dapat menunjukkan tes atau kode yang dirancang dengan buruk yang terlalu kompleks dan sulit untuk diuji dengan bersih [7] [9]. Sebaliknya, pendekatan yang disarankan adalah membuat tiruan baru untuk setiap metode pengujian untuk memastikan independensi dan kejelasan dalam pengujian [7] [9].
Perbandingan dengan perpustakaan mengejek lainnya
1. JMock2: Tidak seperti Mockito, JMock2 menggunakan konteks untuk mengelola ekspektasi dan informasi tiruan, yang dibangun kembali untuk setiap metode pengujian. Ini berarti bahwa JMock2 tidak memerlukan reset eksplisit seperti mockito [10]. Pendekatan JMock2 membantu mempertahankan isolasi tes tanpa perlu mengatur ulang ejekan secara manual.
2. Easymock: Easymock juga biasanya tidak memerlukan metode reset. Ini dirancang untuk membuat objek tiruan baru untuk setiap tes, mirip dengan praktik yang disarankan dengan mockito. Szczepan Faber, pengembang mockito, menyebutkan bahwa ia tidak pernah membutuhkan fitur reset saat menggunakan Easymock [8].
3. Mockito vs Perpustakaan Lain: Secara umum, perpustakaan mengejek lainnya seperti JMock2 dan Easymock mempromosikan pendekatan pengujian yang lebih bersih dengan secara otomatis mengelola keadaan tiruan atau mendorong penciptaan tiruan baru untuk setiap tes. Metode mockito `reset ()` lebih merupakan pengecualian daripada norma dalam kerangka kerja mengejek.
Praktik terbaik
- Hindari menggunakan `reset ()`: kecuali benar -benar diperlukan, seperti ketika mock disuntikkan oleh wadah dan tidak dapat diciptakan kembali untuk setiap tes, disarankan untuk menghindari penggunaan `reset ()`. Sebaliknya, fokuslah untuk membuat tes sederhana dan fokus dengan tiruan baru untuk setiap skenario [7] [9].
- Gunakan `clearInvocations ()`: jika Anda perlu menghapus interaksi tanpa mengatur ulang stubbing, gunakan `clearInvocations ()`. Metode ini memungkinkan Anda untuk mempertahankan stubbing saat membersihkan interaksi yang direkam, yang dapat berguna dalam skenario tertentu [5].
- Kode Refactor untuk Testability: Jika Anda perlu menggunakan `reset ()` sering, itu mungkin menunjukkan bahwa kode Anda dapat memperoleh manfaat dari refactoring untuk membuatnya lebih dapat diuji. Ini dapat melibatkan memecah metode yang kompleks atau meningkatkan injeksi ketergantungan [9].
Singkatnya, sementara Mockito menyediakan metode `reset ()`, penggunaannya umumnya tidak disarankan untuk membuat tiruan baru untuk setiap tes. Perpustakaan mengejek lainnya sering mempromosikan praktik serupa, menekankan tes bersih dan independen atas manajemen tiruan yang kompleks.
Kutipan:[1] https://www.tutorialspoint.com/mockito/mockito_resetting_mock.htm
[2] https://groups.google.com/g/mockito/c/y_ihdc8lx_m
[3] https://www.vogella.com/tutorials/mockito/article.html
[4] https://www.lambdatest.com/automation-testing-advisor/selenium/methods/org.mockito.mockito.reset
[5] https://www.toptal.com/java/a-guide-to-everyday-mockito
[6] https://www.jebel.com/blog/mock-unit-testing-with-mockito
[7] https://stackoverflow.com/Questions/34412106/Appror-suse-use-of-mockito-resset
[8] https://groups.google.com/g/mockito/c/_vxg33tlzl8
[9] https://softwareEngineering.stackexchange.com/questions/188299/is-this-an-appropropent-use-of-mockitos-resset-method
[10] https://stackoverflow.com/questions/18164123/how-to-tlean-vocks-in-spring-tests-when-using-mockito