Beberapa pertanyaan:
- Bagaimana Karma dan kerangka kerja pengujian X (Jasmine, Mocha, QUnit) saling berhubungan?
- Apa kerangka kerja yang setara di dunia Java? Saya menganggap Jasmine, Mocha, QUnit sama dengan jUnit / TestNG. Bagaimana dengan Karma?
- Bisakah saya menjalankan kerangka pengujian X (misalnya Jasmine) tanpa Karma?
- Apakah Karma untuk tes unit atau tes integrasi / e2e? Referensi ini menunjukkan untuk uji unit, namun ini dikatakan untuk uji e2e.
javascript
unit-testing
integration-testing
Lee Chee Kiam
sumber
sumber
Jawaban:
Karma adalah pelari uji browser.
Idenya adalah bahwa browser tidak memiliki konsep memuat file tes, menjalankannya, dan melaporkan hasil. Apa yang dilakukan karma adalah (secara kasar):
Melihat setiap bagian:
(1) File-file itu akan menjadi file js Anda yang sebenarnya; Anda akan memberi tahu karma cara memuatnya. Jika Anda menggunakan requirejs, ada plugin karma, dan beberapa konfigurasi diperlukan.
(2) Tes-tes tersebut dapat ditulis dalam berbagai kerangka pengujian Javascript (Jasmine, QUnit, Mocha); ini adalah kode JS yang dijalankan di browser.
(3) Halaman web khusus akan sedikit berbeda untuk setiap kerangka kerja pengujian; inilah sebabnya karma memiliki plugin untuk kerangka kerja yang berbeda.
(4) Karma dapat meluncurkan halaman di banyak browser (FF, Chrome, atau browser tanpa kepala seperti PhantomJs.)
(5) Pelaporan ke karma, sekali lagi, bergantung pada kerangka kerja, dan ditangani dengan plugin karma.
Jadi untuk menjawab pertanyaan Anda:
sumber
Satu cara yang lebih singkat untuk memahami perbedaannya:
Orang yang menguji dengan Jasmine / Mocha biasa kemungkinan besar menjalankan semua kode dengan mesin virtual Node.
Menambahkan Karma ke dalam campuran (di atas kerangka pilihan Anda yang ada) akan menjalankan suite pengujian Anda dengan mesin browser lain.
Dengan melakukan ini, Anda mendapatkan sedikit tambahan yang Anda dapatkan dengan lingkungan browser. Akan lebih mudah untuk menguji kode terkait DOM, tetapi Anda juga akan memberikan sumber daya tambahan yang diberikan oleh mesin Node (seperti akses sistem file / shell)
sumber
Tesis orang yang merancang Karma sangat informatif dalam menggambarkan solusi yang ada dan membandingkannya, dan tentu saja menggambarkan Karma itu sendiri
https://github.com/karma-runner/karma/blob/master/thesis.pdf
Ringkasan: Karma adalah pelari ujian. Ini dapat digunakan oleh QUnit, Jasmine, Mocha, ... Karma memiliki keunggulan untuk pelari tes lainnya untuk meningkatkan siklus pengembangan TDD / BDD Anda. Itu "menonton" file, jadi ketika Anda menyimpan perubahan, Karma menjalankan tes dan melaporkan kembali secara instan, tanpa mengalihkan konteks ke Web Browser untuk menjalankan tes.
Singkatnya, mungkin pertanyaannya adalah Karma DAN Jasmine atau Mocha atau QUnit?
sumber