Birçok JavaScript birim testini ve test aracını inceledim ve düşündüm, ancak tamamen TDD uyumlu kalmak için uygun bir seçenek bulamadım. Peki, tamamen TDD uyumlu bir JavaScript birim test aracı var mı?
Birçok JavaScript birim testini ve test aracını inceledim ve düşündüm, ancak tamamen TDD uyumlu kalmak için uygun bir seçenek bulamadım. Peki, tamamen TDD uyumlu bir JavaScript birim test aracı var mı?
Yanıtlar:
Karma, Node.js ile oluşturulmuş ve birim testi için tasarlanmış bir JavaScript test çalıştırıcısıdır.
İletki uçtan uca test içindir ve testleri yürütmek için Selenium Web Sürücüsünü kullanır.
Her ikisi de Açısal ekip tarafından yapılmıştır. İstediğiniz herhangi bir iddia kitaplığını da kullanabilirsiniz.
Screencast: Karma Başlarken
ilgili :
artıları :
Eksileri :
Mocha.js'nin özellikleri, güçlü ve zayıf yönleri hakkında yorum yapmak için tamamen niteliksizim, ancak bana sadece JS topluluğuna güvendiğim biri tarafından önerildi.
Web sitesinde bildirildiği gibi özelliklerin listesi:
Bu artık mevcut değil, bunun yerine sequential.js adresine yönlendiriyor
Yolpo, javascript yürütme görselleştirmek için bir araçtır. Javascript API geliştiricileri, API'larını göstermek ve anlatmak için kullanım durumlarını yazmaya teşvik edilir. Bu tür kullanım durumları regresyon testlerinin temelini oluşturur.
ES2015 için yerleşik desteğe sahip fütüristik test koşucusu. JavaScript tek iş parçacıklı olmasına rağmen, Node.js'deki IO, eşzamansız yapısı nedeniyle paralel olarak gerçekleşebilir. AVA bundan yararlanır ve testlerinizi eş zamanlı olarak yürütür, bu da özellikle ağır ağır testler için faydalıdır. Ayrıca, test dosyaları ayrı işlemler olarak paralel olarak çalıştırılır, böylece her test dosyası için daha iyi performans ve yalıtılmış bir ortam sağlanır.
Node.js ile oluşturulmuş bir JavaScript test çalıştırıcısı. Çok modüler ve esnektir. Kendi iddialı kütüphanesi ile birlikte gelir, ancak isterseniz kendi kütüphanenizi de ekleyebilirsiniz. İddialar kütüphane aynı zamanda diğer test koşucular ile kullanabilirsiniz böylece, koparılmış olmaktadır. assert(!...)
Veya yerine kullanmak expect(...).not...
, refute(...)
hangi güzel bir bükülme imho kullanır .
Bir tarayıcı JavaScript test araç takımı. Tarayıcı otomasyonu (düşünüyorum JsTestDriver), QUnit tarzı statik HTML sayfa testi, başsız tarayıcılarda test (PhantomJS, jsdom, ...) ve daha fazlası ile tarayıcı testi yapar. Bir göz atın bakış !
Bir Node.js test araç takımı. Aynı test senaryosu kütüphanesini, onaylama kütüphanesini vb. Alırsınız. Bu, karma tarayıcı ve Node.js kodu için de harika. Test vakanızı Buster.JS ile yazın ve hem Node.js'de hem de gerçek bir tarayıcıda çalıştırın.
Screencast: Buster.js Başlarken (2:45)
artıları :
Eksileri :
* TestSwarm aynı zamanda bir Sürekli Entegrasyon sunucusudur, Buster.js için ayrı bir CI sunucusuna ihtiyacınız vardır. Bununla birlikte, xUnit XML raporları çıkarır, bu nedenle Hudson , Bamboo veya diğer CI sunucularıyla entegre edilmesi kolay olmalıdır .
https://github.com/jquery/testswarm
TestSwarm, GitHub web sayfalarında belirtildiği gibi artık aktif olarak geliştirilmiyor. Karma, tarayıcı-koşucusu veya Stajyer'i öneriyorlar.
Bu, Ruby veya Ruby on Rails hakkında bilgi sahibi geliştiricilerin ilgisini çekebilecek davranışa dayalı bir çerçevedir (aşağıda alıntıda belirtildiği gibi). Sözdizimi, Rails projelerinde test etmek için kullanılan RSpec'i temel alır .
Yasemin özellikleri bir html sayfasından (qUnit tarzında) veya bir test koşucusundan (Karma olarak) çalıştırılabilir.
Jasmine, JavaScript kodunuzu test etmek için davranış odaklı bir geliştirme çerçevesidir. Başka hiçbir JavaScript çerçevesine bağlı değildir. Bir DOM gerektirmez.
Bu test çerçevesi ile ilgili deneyiminiz varsa, lütfen daha fazla bilgi ile katkıda bulunun :)
Proje ana sayfası: http://jasmine.github.io/
QUnit, geliştiriciye mümkün olduğunca çok kolaylık sağlarken, JavaScript'i tarayıcıda test etmeye odaklanır. Siteden Blurb:
QUnit güçlü, kullanımı kolay bir JavaScript birim test paketidir. JQuery, jQuery UI ve jQuery Mobile projeleri tarafından kullanılır ve herhangi bir genel JavaScript kodunu test edebilir
QUnit, TestSwarm ile bazı geçmişleri paylaşır (yukarıda):
QUnit ilk olarak jQuery'nin bir parçası olarak John Resig tarafından geliştirilmiştir. 2008 yılında kendi ev, isim ve API belgelerine sahipti ve başkalarının da birim testleri için kullanmasına izin verdi. O zaman hala jQuery'ye bağlıydı. 2009'da yeniden yazma işlemi, QUnit'in tamamen bağımsız çalıştığını düzeltti. QUnit'in onaylama yöntemleri, bir dereceye kadar QUnit'ten etkilenen CommonJS Birim Testi spesifikasyonunu takip eder.
Proje ana sayfası: http://qunitjs.com/
Başka bir harika araç da Test-Driven JavaScript Development'in yazarı Christian Johansen tarafından sinon.js'dir . En iyi tarif edilen:
JavaScript için bağımsız test casusları, taslakları ve alayları. Hiçbir bağımlılık herhangi bir birim test çerçevesi ile çalışmaz.
Stajyer Web sitesi bu listedeki diğer test çerçeveler doğrudan özellik karşılaştırma sağlar. Kullanıma hazır diğer JavaScript tabanlı test sistemlerinden daha fazla özellik sunar.
Yeni ama çok güçlü bir test çerçevesi. Anlık görüntü tabanlı testlere izin verir, bu da test hızını artırır ve test açısından yeni bir dinamik oluşturur
Konuşmalarından birine göz atın: https://www.youtube.com/watch?v=cAKYQpTC7MA
Daha da iyisi: Başlarken
JavaScript birim testi için neredeyse çerçeveden bağımsız bir koşum olan ve herhangi bir Dojo bağımlılığı olmayan Dojo Nesne Kablo Demeti (DOH) birim test çerçevesine bir göz atın . Dojo Objektif Kablo Demeti'ni kullanarak Web 2.0 uygulamalarını test eden Birim'de bunun çok iyi bir açıklaması var .
UI testini otomatikleştirmek istiyorsanız (birçok geliştiricinin ağrılı noktası) - doh.robot'a (geçici olarak aşağı güncelleyin: diğer bağlantı http://dojotoolkit.org/reference-guide/util/dohrobot.html ) ve dijit .robotx (geçici olarak kapalı) . İkincisi bir kabul testi için tasarlanmıştır. Güncelleme:
Referans verilen makaleler, bunların nasıl kullanılacağını, fare ve / veya klavyeyi kullanarak kullanıcı arayüzünüzle etkileşime giren bir kullanıcının nasıl taklit edileceğini ve bir test oturumunun nasıl kaydedileceğini açıklar, böylece daha sonra otomatik olarak "oynatabilirsiniz".
JavaScript birim testleri için bir test koşucusu olan Chutzpah adlı açık kaynaklı bir proje oluşturdum. Chutzpah, JavaScript birim testlerini komut satırından ve Visual Studio içinden çalıştırmanızı sağlar. Ayrıca TeamCity sürekli entegrasyon sunucusunda çalışmayı da destekler.
Wikipedia girişinin Birim Test Çerçeveleri Listesi'nin JavaScript bölümü , kullanılabilir seçeneklerin bir listesini sağlar. İstemci tarafında, sunucu tarafında veya her ikisinde birden çalışıp çalışmadığını gösterir.
Test Tahrikli Javascript Geliştirme ve Sinon çerçevesinin yazarı Christian Johansen'den BusterJS de var . Siteden:
Buster.JS yeni bir JavaScript test çerçevesidir. Node.js testinin yanı sıra gerçek tarayıcılardaki test çalışmalarını (JsTestDriver'ı düşünün) otomatikleştirerek tarayıcı testi yapar.
Google tarafından yayınlanan JavaScript test çerçevesi: https://github.com/google/gjstest
- Bir tarayıcı çalıştırmak zorunda kalmadan son derece hızlı test başlatma ve yürütme süresi.
- Hem başarılı hem de başarısız testlerde temiz, okunabilir çıktı.
- Bir tarayıcı tabanlı bir test atlet JS her değiştiğinde sadece yenilenebilir.
- C ++ için Google Testine benzeyen stil ve anlambilim .
- Google C ++ Alaycı Çerçevesi'ni temel alan stil ve anlambilim ile minimal bir kaynatıcı kodu (ör. Hayır
$tearDown
veya$verifyAll
) gerektiren yerleşik bir alaycı çerçeve .
Şu anda Windows için ikili dosya yok
Şimdi Qunit'i Pavlov ve JSTestDriver ile birlikte kullanıyoruz. Bu yaklaşım bizim için iyi işliyor.
Bir profesyonel olarak "gerçek tarayıcı üzerinde çalışır" var, ama benim deneyimime göre bu bir con çünkü yavaş. Ancak onu değerli kılan, tarayıcı dışı alternatiflerden yeterli JS emülasyonunun olmamasıdır. JS'niz sadece tarayıcıda bir testin yeterli olacağı kadar karmaşıksa, dikkate alınması gereken birkaç seçenek daha olabilir:
HtmlUnit : "Oldukça iyi bir JavaScript desteğine sahiptir (sürekli olarak gelişmektedir) ve kullanmak istediğiniz yapılandırmaya bağlı olarak Firefox veya Internet Explorer'ı simüle ederek oldukça karmaşık AJAX kütüphaneleriyle bile çalışabilir." Emülasyonu kullanımınız için yeterince iyi ise, bir tarayıcı sürmekten çok daha hızlı olacaktır.
Ama belki HtmlUnit yeterince iyi JS desteği var ama Java sevmiyorsun? O zaman belki:
Hız : HtmlUnit tarafından desteklenen JRuby üzerinde çalışan Watir API.
veya benzer şekilde
Schnell : HtmlUnit'in başka bir JRuby paketleyicisi.
Tabii ki HtmlUnit yeterince iyi değilse ve bir tarayıcı kullanmanız gerekiyorsa, JS'nizi sürmek için Watir'i düşünebilirsiniz .
YUI'nin de bir test çerçevesi var . Bu video Yahoo! Tiyatro, TDD ile ilgili birçok temel bilgi olmasına rağmen güzel bir tanıtımdır.
Bu çerçeve geneldir ve herhangi bir JavaScript veya JS kütüphanesinde çalıştırılabilir.
Ayrıca , Dojo, ExtJS, vb.'ye benzer açık kaynaklı bir RIA çerçevesi olan qooxdoo'nun bir parçası olan ancak oldukça kapsamlı bir araç zincirine sahip birim test çerçevesiyle de ilgilenebilirsiniz .
Test çalıştırıcının çevrimiçi sürümünü deneyin . İpucu: sol üstteki gri oka basın (daha belirgin hale getirilmelidir). Seçilen testleri çalıştıran bir "oynat" düğmesi.
Birim testlerinizi tanımlamanıza izin veren JS sınıfları hakkında daha fazla bilgi için çevrimiçi API görüntüleyicisine bakın .
Otomatik kullanıcı arayüzü testi için (Selenium RC tabanlı), Simulator projesine göz atın .
Env.js'ye bir göz atmalısınız . Env.js ile birim testleri yazma hakkında bir örnek için bloguma bakın.
Javascript kod üreticisi ST-JS'ye ( http://st-js.org ) Java'mıza JUnit entegrasyonunu ekledik . Çerçeve, hem test edilen kod hem de birim testleri için karşılık gelen Javascript oluşturur ve kodu farklı tarayıcılara gönderir.
Birim test çalıştırıcısı gerekli http portunu açtığından (ve testler bittikten sonra kapattığından) ayrı bir sunucuya gerek yoktur. Çerçeve, Java yığın izlemesini değiştirerek başarısız eklerin JUnit Eclipse eklentisi tarafından doğru bir şekilde görüntülenmesini sağlar. İşte jQuery ve Mockjax ile basit bir örnek:
@RunWith(STJSTestDriverRunner.class)
@HTMLFixture("<div id='fortune'></div>")
@Scripts({ "classpath://jquery.js",
"classpath://jquery.mockjax.js", "classpath://json2.js" })
public class MockjaxExampleTest {
@Test
public void myTest() {
$.ajaxSetup($map("async", false));
$.mockjax(new MockjaxOptions() {
{
url = "/restful/fortune";
responseText = new Fortune() {
{
status = "success";
fortune = "Are you a turtle?";
}
};
}
});
$.getJSON("/restful/fortune", null, new Callback3<Fortune, String, JQueryXHR>() {
@Override
public void $invoke(Fortune response, String p2, JQueryXHR p3) {
if (response.status.equals("success")) {
$("#fortune").html("Your fortune is: " + response.fortune);
} else {
$("#fortune").html("Things do not look good, no fortune was told");
}
}
});
assertEquals("Your fortune is: Are you a turtle?", $("#fortune").html());
}
private static class Fortune {
public String status;
public String fortune;
}
}
MochiKit'in SimpleTest adında bir test çerçevesi var gibi görünüyor. İşte orijinal yazarın bir blog yazısı .