Haruskah saya menggunakan Busur Derajat atau Karma untuk pengujian ujung ke ujung? [Tutup]

124

Haruskah saya menggunakan Busur Derajat atau Karma untuk pengujian ujung ke ujung?

Angular-seed menggunakan Protractor / Selenium WebDriver untuk E2E tetapi tutorial angular-phonecat menggunakan karma.

Saya membaca bahwa saya harus menggunakan Karma untuk pengujian unit dan Busur Derajat untuk E2E, yang tampaknya baik-baik saja tetapi saya pikir saya akan bertanya di sini untuk mendapatkan pendapat pengembang lain.

screenm0nkey
sumber
1
Lebih cocok untuk rekomendasi perangkat lunak . Meskipun jika Anda memposting pertanyaan ini di sana, Anda harus menjelaskan apa persyaratan Anda. Meta terkait
Profesor Allman
5
Karma dan Busur derajat keduanya digunakan dan direkomendasikan oleh tim Angular, tetapi mengingat keadaan dokumentasi (yaitu: ada banyak sekali dan sulit untuk mengetahui apa yang mutakhir) sulit untuk mengetahui mana yang harus digunakan dan untuk tujuan yang mana. Ini adalah pertanyaan yang bagus dan jawaban glpretre juga persis seperti yang saya cari.
Matt
5
Saya tidak berpikir pertanyaannya terlalu luas (Busur derajat vs Karma). Kerangka kerja yang kita bicarakan di sini, bukan hanya beberapa perangkat lunak, jadi pertanyaannya adalah di tempat yang tepat.
CCC
Lihat jawaban saya di sini untuk pembahasan lebih rinci tentang kasus penggunaan, keuntungan dan batasan Karma dan Busur derajat: stackoverflow.com/a/29619467/1614973
Dmitri Zaitsev
Pemahaman saya adalah bahwa Busur derajat tidak mengizinkan untuk menguji hanya sebagian dari aplikasi Anda tanpa kehadiran yang lain (misalnya mengejek): kode pengujian bahkan tidak berjalan di penerjemah JS yang sama dengan aplikasi. Tidak ada pemantauan sistem file untuk modifikasi kode sumber dan pemicuan ulang otomatis dari pengujian yang terpengaruh. Karma menyediakan ini. Ini mengirimkan kode uji + kode aplikasi dalam <script> ke browser sehingga mereka berjalan di interpreter yang sama, mungkin mengejek, tetapi tidak dirancang untuk pengujian ujung-ke-ujung dengan kejadian asli seolah-olah pengguna sebenarnya bertindak.
robert4

Jawaban:

179

Tim AngularJS merekomendasikan penggunaan Busur derajat karena itu akan menggantikan pelari skenario sudut:

Angular Scenario Runner dalam mode pemeliharaan - Jika Anda memulai proyek Angular baru, pertimbangkan untuk menggunakan Protractor .

dikutip dari dokumentasi AngularJs .

Tutorial angular-phonecat dikembangkan sejak lama (terutama pada tahun 2011) dan belum diperbarui untuk menggunakan beberapa fitur baru Angular seperti Protractor.

EDIT

Dalam Dokumen Busur Derajat - FAQ :

Mengapa Karma dan Busur Derajat? Kapan saya menggunakan yang mana?

Karma adalah alat yang hebat untuk pengujian unit, dan busur derajat dimaksudkan untuk pengujian ujung ke ujung atau integrasi. Artinya, pengujian kecil untuk logika pengontrol, arahan, dan layanan individual Anda harus dijalankan menggunakan Karma. Tes besar di mana Anda memiliki instance yang sedang berjalan dari seluruh aplikasi Anda harus dijalankan menggunakan Protractor. Busur derajat dimaksudkan untuk menjalankan pengujian dari sudut pandang pengguna - jika pengujian Anda dapat ditulis sebagai instruksi untuk manusia yang berinteraksi dengan aplikasi Anda, itu harus menjadi pengujian ujung ke ujung yang ditulis dengan Busur derajat.

Berikut entri blog yang bagus dengan info lebih lanjut.

glepretre
sumber
11
Dari FAQ Karma - karma-runner.github.io/0.10/intro/faq.html - Dapatkah saya menggunakan Karma untuk melakukan pengujian ujung ke ujung? Karma terutama dirancang untuk pengujian tingkat rendah (unit). Jika ini adalah aplikasi AngularJS, Anda dapat menggunakan Karma dengan plugin karma-ng-skenario, namun kami merekomendasikan Protractor untuk pengujian tingkat tinggi.
mrwaim
Jika saya ingin pengujian unit serta pengujian e2e maka saya harus mengkonfigurasi lingkungan karma untuk pengujian unit dan busur derajat untuk pengujian ui atau pengujian e2e?
Sunil Garg
2
@SunilGarg Ya Anda harus, mungkin struktur aplikasi pemula kami dapat membantu Anda: github.com/glepretre/angular-requirejs-ready (abaikan spesifikasi requireJS jika Anda tidak menggunakannya)
glepretre