Karma vs test çerçevesi Jasmine, Mocha, QUnit [kapalı]


258

Birkaç soru:

  • Karma ve test çerçevesi X (Yasemin, Mocha, QUnit) birbiriyle nasıl ilişkilidir?
  • Java dünyasındaki eşdeğer çerçeve nedir? Jasmine, Mocha, QUnit'in jUnit / TestNG'ye eşit olduğunu varsayıyorum. Karma'ya ne dersin?
  • Karma olmadan X test çerçevesini (örn. Jasmine) çalıştırabilir miyim?
  • Karma birim testi veya entegrasyon / e2e testi için mi? Bu referans birim testi içindir, ancak bu e2e testi içindir.

Karma olmadan mocha çalıştırıyoruz, ancak birçok geliştirici birkaç test çerçevesi kullanıyor
the_red_baron

Yanıtlar:


419

Karma bir tarayıcı testi koşucusu.

Fikir, tarayıcıların yerel olarak test dosyalarını yükleme, çalıştırma ve sonuçları raporlama kavramına sahip olmamasıdır. Karma'nın yaptığı (kabaca):

  • test edilecek "istemci tarafı" javascript dosyalarını sunmak için küçük bir web sunucusunun başlatılması (1)
  • ayrıca "istemci tarafı" javascript dosyalarını testlerle (veya sıklıkla adlandırıldıkları gibi Özellikler) sunar (2)
  • testler için javascript kodu çalıştıracak özel bir web sayfası sunma (3)
  • bu sayfayı yüklemek için bir tarayıcı başlat (4)
  • test sonuçlarını sunucuya bildirin (5)
  • karma daha sonra sonuçları metin dosyalarına, konsola, CI sunucunuzun sevdiği her şeye vb.

Her bölüme bakarken:

(1) Bu dosyalar gerçek js dosyalarınız olacaktır; karma'yı nasıl yükleyeceğinizi anlatacaksınız. Requijs kullanıyorsanız, bir karma eklentisi vardır ve bazı yapılandırmalar gereklidir.

(2) Bu testler çeşitli Javascript test çerçevesinde (Jasmine, QUnit, Mocha) yazılabilir; bu tarayıcıda çalıştırılan JS kodudur.

(3) Özel web sayfası her test çerçevesi için biraz farklı olacaktır; bu yüzden karmanın farklı çerçeveler için eklentileri vardır.

(4) Karma, sayfayı birçok tarayıcıda (FF, Chrome veya PhantomJ'ler gibi başsız tarayıcılarda) başlatabilir.

(5) Karmaya rapor vermek yine çerçeveye bağımlıdır ve karma eklentileri ile ilgilidir.

Sorularınızı cevaplamak için:

  • Java'da, çoğu kişi hem testleri yazmak hem de çalıştırmak için bir çerçeve olan JUnit'i kullanır, ancak testlerin yürütüldüğü ve test raporlarının toplandığı ortamı farklılaştırma sorunu yaşamaz; karma bir JUnit Suite ve bir JUnit TestRunner arasındaki eksik parça olurdu
  • Evet, karmanın "elle" yaptığı her şeyi yapabilirsiniz - bir çerçeve seçin (yasemin, qunit, mocha) ve talimatları izleyin. Karma'nın avantajı, standart bir kurulumdaysanız hazır bir çözüm sağlamasıdır.
  • Karma, hem birim testi (yasemin / qunit / ne olursa olsun) hem de entegrasyon testleri (tarayıcıyı çalıştırmak için web sürücüsü gibi başka bir API kullanacak) için kullanılabilir

59
Bu bir blog gönderisini veya bir şeyi hak ediyor.
Willa

Karma, sayfayı birçok tarayıcıda (FF, Chrome veya PhantomJ'ler gibi başsız tarayıcılarda) başlatabilir mi? Yasemin de öyle mi? birçok çerçevede test edebilir ve conf
js'de

1
@ Wang'lPakhrin Elbette yasemin (m) ile herhangi bir tarayıcıda kullanabilirsiniz. Demek istediğim, teknik olarak, karma test etmek istediğiniz tarayıcıları başlatabilir (m). Yazma sırasında, yasemin aslında tarayıcıları başlatmaktan sorumlu değildi (hala öyle olduğunu sanmıyorum.) Umarım bir şeyler netleştirir!
phtrivier


1
@Willa Bu cevaba dayanarak bir youtube vid yaptım youtube.com/watch?v=bJc078szrZA :)
bersling

70

Farkı anlamanın kısa bir yolu:

Yassı Yasemin / Mocha ile test eden insanlar büyük olasılıkla tüm kodu Node sanal makinesiyle çalıştırıyorlar.

Karışıma Karma eklemek (mevcut seçim çerçevenizin üzerine), test paketinizi diğer tarayıcıların motoruyla çalıştıracaktır.

Bunu yaparak, bir tarayıcı ortamıyla elde ettiğiniz küçük ekstraları elde edersiniz. DOM ile ilgili kodu test etmek daha kolay olacak, ancak Düğüm motoru tarafından verilen ekstra kaynaklardan da vazgeçeceksiniz (dosya sistemi / kabuk erişimi gibi)


34

Karma'yı tasarlayan adamın tezi, mevcut çözümleri tanımlamak ve karşılaştırmak ve elbette Karma'nın kendisini tanımlamak için çok bilgilendiriciydi.

https://github.com/karma-runner/karma/blob/master/thesis.pdf

Özet: Karma bir test koşucusudur. QUnit, Jasmine, Mocha, tarafından kullanılabilir ... Karma'nın TDD / BDD geliştirme döngüsünü iyileştirmek için diğer test koşucularına avantajları vardır. Dosyaları "izler", bu nedenle bir değişikliği kaydettiğinizde, Karma testleri anında çalıştırır ve anında rapor verir, testi çalıştırmak için Web Tarayıcısına herhangi bir geçiş bağlamı yoktur.

Kısacası, belki soru Karma VE Yasemin veya Mocha veya QUnit olmalı?


2
Bağlantıdan küçük bir özet verebilir misiniz? Bu yanıtınızı geliştirir
winner_joiner

1
Karma Jest testlerini yapabilir mi?
SuperUberDuper

Yasemin de izleyebilir misin? sanırım ama sessiz hatırlamıyorum.
Wang'l Pakhrin

@ Wang'l Pakhrin Yasemin'in saat işlevselliği olduğunu bilmiyorum, sadece nodemon kullanıyorum. "nodemon --exec yasemin" ve bir dosyayı her kaydettiğinizde testleri çalıştıracaktır.
snowfrogdev

Tez Yasemin'den bahsetmiyor.
Carl G
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.