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