Saya sedang menyelidiki kerangka kerja tiruan mana yang akan digunakan untuk proyek saya dan telah mempersempitnya ke JMockit dan Mockito .
Saya melihat bahwa Mockito terpilih sebagai " kerangka kerja tiruan terbaik untuk Java " di Stackoverflow.
Dalam membandingkan fitur di JMockit 's ' Mocking Alat perbandingan Matrix ' tampak bahwa JMockit memiliki beberapa fitur yang berbeda.
Apakah ada yang punya informasi khusus (bukan opini) tentang apa yang dapat dilakukan Mockito yang tidak dapat dicapai dengan JMockit dan sebaliknya?
Jawaban:
Perbarui Sep 2019: Satu-satunya kerangka kerja tiruan yang didukung (secara default) oleh Spring Boot adalah Mockito . Jika Anda menggunakan Spring, jawabannya cukup jelas.
Menurut saya, persaingannya adalah antara JMockit dan PowerMock , lalu Mockito .
Saya akan meninggalkan jMock dan EasyMock "biasa" karena mereka hanya menggunakan proxy & CGLIB dan tidak menggunakan instrumentasi Java 5 seperti kerangka kerja yang lebih baru.
jMock juga tidak memiliki rilis stabil selama lebih dari 4 tahun. jMock 2.6.0 membutuhkan waktu 2 tahun untuk beralih dari RC1 ke RC2, dan kemudian 2 tahun lagi sebelum benar-benar dirilis.
Mengenai Proxy & CGLIB vs instrumentasi:
Di atas disalin dari http://jmockit.org/about.html . Lebih lanjut, ini membandingkan antara dirinya sendiri (JMockit), PowerMock, dan Mockito dalam beberapa cara:
(memang, sumbernya mungkin bias, tapi yah ...)
Saya akan mengatakan pergi dengan JMockit . Ini paling mudah digunakan, fleksibel, dan berfungsi untuk hampir semua kasus bahkan yang sulit dan skenario ketika Anda tidak dapat mengontrol kelas yang akan diuji (atau Anda tidak dapat merusaknya karena alasan kompatibilitas, dll.).
Pengalaman saya dengan JMockit sangat positif.
sumber
-javaagent
flag sejak 1.42 karena Anda tidak dapat melampirkan sendiri lagi sejak Java 9 dan menemukan solusi yang sesuai jelas tidak berada dalam lingkup pengembang. Poin lain adalah bahwa JMockit tidak mengizinkan lagi untuk meniru metode dan konstruktor privat sementara PowerMock melakukannya.Saya bekerja dengan Mockito dan JMockit, dan pengalaman saya dengan mereka adalah:
Mockito:
EasyMock:
JMockit:
Selain itu, manfaat lain dari JMockit:
Saya pribadi lebih suka JMockit, yang menurut saya lebih kaya fitur dan fleksibel, tetapi membutuhkan kurva pembelajaran yang sedikit lebih curam. Biasanya ada beberapa cara untuk mencapai efek mengejek yang sama, dan membutuhkan lebih banyak perhatian saat mendesain tiruan.
sumber
Saya menggunakan jMockit hanya karena perpustakaan refleksi di Deencapsultation.class. Saya sebenarnya menyukai gaya Mockito, tetapi saya menolak untuk mengubah kode saya dan memperkeruh API saya hanya agar kerangka pengujian terbatas dapat melakukannya. Dan saya penggemar pengujian semua kode saya, jadi kerangka kerja yang tidak dapat dengan mudah menguji metode pribadi bukanlah yang ingin saya gunakan.
Saya terpengaruh oleh artikel ini
Setelah kurva pembelajaran (yang diakui besar), jMockit sekarang menjadi kerangka kerja pengujian unit utama saya untuk tiruan.
sumber
Untuk pengujian mudah basis kode lama kami (dengan banyak panggilan metode statis, dll.), JMockit sangat berharga. [Steker tak tahu malu untuk artikel di blog saya]
sumber
Saya pribadi lebih suka EasyMock .
Kemampuan untuk mengalihkan antara kontrol ejekan yang bagus, normal, dan ketat adalah salah satu fitur favorit saya.
sumber