Saya menggunakan JUnit 4.4 dan Maven dan saya memiliki sejumlah besar pengujian integrasi yang berjalan lama.
Dalam hal memparalelkan rangkaian pengujian, ada beberapa solusi yang memungkinkan saya menjalankan setiap metode pengujian dalam satu kelas pengujian secara paralel. Tetapi semua ini mengharuskan saya mengubah tes dengan satu atau lain cara.
Saya benar-benar berpikir itu akan menjadi solusi yang jauh lebih bersih untuk menjalankan kelas uji X yang berbeda di utas X secara paralel. Saya memiliki ratusan tes jadi saya tidak terlalu peduli tentang memasukkan masing-masing kelas tes.
Apakah ada cara untuk melakukan ini?
Dari junit 4.7 sekarang dimungkinkan untuk menjalankan pengujian secara paralel tanpa menggunakan TestNG. Sebenarnya hal itu telah dimungkinkan sejak 4.6, tetapi ada sejumlah perbaikan yang dilakukan di 4.7 yang akan menjadikannya opsi yang layak. Anda juga dapat menjalankan tes paralel dengan pegas, yang dapat Anda baca di sini
sumber
Terinspirasi oleh percobaan JUnit ParallelComputer pelari Aku telah membangun sendiri ParallelSuite dan ParallelParameterized pelari. Dengan menggunakan pelari ini, seseorang dapat dengan mudah memparalelkan rangkaian pengujian dan pengujian berparameter.
ParallelSuite.java
ParallelParameterized.java
Penggunaannya sederhana. Ubah saja nilai anotasi @RunWith ke salah satu kelas Paralel * ini .
sumber
tempus-fugit menawarkan sesuatu yang serupa, lihat dokumen untuk detailnya. Ini bergantung pada JUnit 4.7 dan Anda cukup menandai pengujian Anda
@RunWith(ConcurrentTestRunner)
.Bersulang
sumber
Anda dapat melihat pustaka sumber terbuka - Test Load Balancer . Itu persis seperti yang Anda minta - menjalankan kelas pengujian yang berbeda secara paralel. Ini terintegrasi pada tingkat ant-junit sehingga Anda tidak perlu mengubah pengujian Anda. Saya salah satu penulis perpustakaan.
Juga, pikirkan untuk tidak menjalankannya di utas karena Anda mungkin memerlukan kotak pasir tingkat proses. Misalnya, jika Anda mencapai DB dalam pengujian integrasi, Anda tidak ingin satu pengujian gagal karena pengujian lain menambahkan beberapa data di thread berbeda. Seringkali, tes tidak ditulis dengan pemikiran ini.
Akhirnya, bagaimana cara mengatasi masalah ini sampai sekarang?
sumber
TestNG dapat melakukan itu (ini adalah refleks pertama saya - kemudian saya melihat Anda sudah memiliki banyak testcases).
Untuk JUnit, lihat parallel-junit .
sumber
Anda dapat menjalankan pengujian secara paralel menggunakan ParallelComputer yang disediakan oleh Junit sendiri. Berikut cuplikan kecil untuk Anda mulai.
Ini akan membantu saat Anda perlu menjalankan pengujian dari kode karena kode ini tidak memiliki ketergantungan pada Maven atau fitur manajemen build lainnya.
Harap perhatikan bahwa, ini akan menjalankan semua kasus pengujian secara paralel, jika Anda memiliki dependensi di antara kasus pengujian yang berbeda, hal itu dapat menghasilkan positif palsu. Bagaimanapun, Anda HARUS TIDAK melakukan tes yang saling bergantung.
sumber
Pilihan lain: Punner, pelari junit paralel dan plugin maven baru. Anda tidak perlu mengubah kode Anda, salin ke pom.xml Anda:
Punner dapat menjalankan metode pengujian secara paralel, dapat menjaga keluaran pengujian secara terpisah dan bersih.
Punner akan mengurangi keluaran konsol mvn Anda, seperti ini:
Punner menghasilkan keluaran yang pasti kompatibel, Anda juga bisa mendapatkan data log mentah dan laporan format penurunan harga dari direktori laporan:
Punner adalah proyek pribadi saya, saya menulis Punner untuk mempercepat fase pengujian unit dari beberapa proyek lain seperti kerangka kerja IPC, penguncian halus, layanan jurnal, mesin alur kerja terdistribusi, dll. Ini menghemat banyak waktu tunggu saya.
Punner belum mendukung beberapa fitur lanjutan. Saya sangat senang jika Anda dapat mencobanya dan memberi saya umpan balik.
sumber
Anda dapat mengubah pengujian Anda menjadi pengujian TestNg dalam satu menit (Anda hanya perlu mengubah impor), TestNG adalah yang terbaik dalam pengujian paralel.
sumber
Anda dapat mencoba Gridgain yang memungkinkan Anda menjalankan pengujian Anda di seluruh jaringan komputasi.
sumber