Jadi, saya sedang mengembangkan beberapa layanan web Java yang digerakkan oleh database, menggunakan Hibernate dan MySQL. Untuk tujuan pengujian, saya menggunakan database H2 di memori. H2 bagus dan cepat, jadi ini bekerja dengan sangat baik. Satu-satunya masalah adalah bahwa mengisi tabel DB sebelum tes saya agak membosankan. Saya pada dasarnya membuat dan bertahan banyak objek dengan tangan. Saya bertanya-tanya apakah mungkin saya salah jalan.
Tolong beritahu saya, apa praktik terbaik untuk melakukan apa yang saya coba lakukan? Adakah alat yang bisa membantu saya? Adakah strategi atau tip umum?
Mungkin Anda akan mendapat manfaat dengan memanfaatkan kerangka kerja mengejek dalam pengujian unit otomatis Anda?
Ada beberapa yang berbeda untuk dipilih:
Mockito
JMock
EasyMock
PowerMock
sumber
Yang benar-benar dapat Anda lakukan adalah bertahan objek dengan tangan atau memiliki database prebuilt yang Anda muat. Anda juga perlu memastikan bahwa database diatur ulang setelah setiap tes.
Dalam sebuah proyek yang sedang saya kerjakan, saya baru mengenal Hibernate, jadi saya memiliki banyak tes untuk hubungan dasar dan operasi kaskade. Menggunakan TestNG, saya memiliki
GenericHbTest
kelas tempat semua tes Hibernate diperluas. Ini memiliki@BeforeMethod
metode yang mengekspor kembali skema db dan beberapa metode utilitas untuk menghasilkan berbagai objek DAO. Ini memungkinkan saya untuk menyesuaikan lingkungan untuk setiap tes.Satu-satunya kelemahan untuk mengekspor kembali skema setiap tes adalah bahwa dibutuhkan waktu yang sangat lama untuk menyelesaikan tes yang berjalan. Tetapi saya hanya perlu memastikan bahwa semuanya terpisah dan bersih. Jika Anda lebih berpengalaman dengan Hibernate dan memiliki skema yang lebih stabil maka mengekspor kembali sebelum setiap tes mungkin tidak perlu. Setidaknya meskipun menghapus semua tabel sebelumnya
sumber
Sudahkah Anda mempertimbangkan serialisasi objek? Ini adalah metode tercepat dan termudah yang saya gunakan.
Terdiri dari menciptakan status yang Anda inginkan, membuat serial menjadi disk. Anda menggunakan file-file itu untuk mengisi basis data dalam memori yang Anda gunakan untuk pengujian Anda.
Salah satu keuntungannya adalah Anda dapat mengedit file secara manual nanti.
Sebagai alternatif, jika Anda terorganisasi dengan baik dalam pengujian unit Anda, Anda bisa membuat generator objek. Ketika tes dimulai, basis data akan dipakai dan skema diekspor (menggunakan nHibernate). Objek dihasilkan dan diisi dalam database.
Metode ini memiliki keunggulan dibandingkan yang pertama: generator objek Anda berevolusi dengan kode Anda, jadi Anda tidak perlu khawatir tentang file Anda seperti pada saran sebelumnya.
sumber