8

Ich schreibe eine Reihe von Funktionen in Javascript, die in einem Browser ausgeführt werden sollen (kein serverseitiges Javascript).Kontinuierliche Integration/Testen von Javascript-Code gegen verschiedene Browser

Wie können Sie Unit- und Perfomance-Tests in verschiedenen Browsern ausführen und die Ergebnisse für jeden Build verfolgen?

  • Tests sollten sollte
  • als Stand-alone-Text oder HTML-Datei
  • Ziel Browser sind Internet Explorer 7 und 8, neueste Firefox, neueste Chrome, neueste Safari produziert werden innerhalb eines Browsers
  • Testergebnisse ausgeführt werden
  • ich bin frei für das Einrichten eines dedizierten CI-Server und virtuelle Maschinen bei Bedarf

Antwort

9

Ich habe für die Prüfung und JSTestDriver Jasmine Rahmen im Einsatz. Ich hatte auch Hudson und TeamCity für CI als Teil der Evaluierung eingerichtet, obwohl sich TeamCity schließlich entschied.

Jasmine ist ein sehr schönes BDD-Framework, das auch Spott- und Stubbing-Funktionen bietet.

Der JSTestDriver-Server ermöglicht es jedem Browser, sich an ihn zu binden, ob lokal oder remote, wie Vojta bereits erwähnt hat. Ich konnte zum Beispiel Browser von Windows- und MAC-Rechnern verbinden, und auch iPhone ... es ist durchaus möglich, andere mobile Browser zu verbinden, wenn Mobile-Development Ihnen gefällt. JSTestDriver erzeugt JUnit XML-Ergebnisdateien, die entweder von Hudson oder TeamCity analysiert und berichtet werden können.

Wie bereits erwähnt, ist für JSTestDriver ein Eclipse-Plugin verfügbar. Ich bin vor kurzem zu WebStorm 1.0 und jetzt 2.0 (IDE von JetBrains) übergegangen, und ein Plugin existiert auch für diese IDE, wenn auch etwas fehlerhaft. WebStorm ist, was die JavaScript-Entwicklung angeht, übrigens exzellent.

Wir schreiben auch serverseitigen JS-Code, und Jasmine hat auch hier gut funktioniert.

Ich habe JsTestDriver/TeamCity in der Amazon-Cloud installiert und konfiguriert und kann beispielsweise Jasmine-Tests kopflos ausführen.

Kurz gesagt, zwischen den drei Lösungen (Jasmin, JSTestDriver und Teamcity), Tonnen von Plugins/Adapter/Rezepte gibt, die eine beliebige Anzahl von Einstellungen oder Konfigurationen ermöglichen. Das soll nicht heißen, dass andere Kombinationen nicht funktionieren ... einfach, für mich hat sich diese Kombination bisher bewährt.

1

Jasmine (http://pivotal.github.com/jasmine) ist ein Abhängigkeits-freies BDD-Framework zum Testen von JavaScript.

Es wäre ziemlich einfach zu Jasmine & der Jasmine Ruby Juwel, um eine Matrix von Läufen gegen die verschiedenen Browser (Selen fährt den Browser in der Edelstein) und melden sie über Ihre CI wie Sie vorschlagen. Sollte einfach sein.

1

Ich benutze JsTestDriver für JS-Entwicklung. Es ist ein Test-Runner (nicht Unit-Test-Framework), so dass Sie es zusammen mit Jasmine oder QUnit verwenden können.

Sie starten einfach einen Server und erfassen Browser (könnte auch ein Remote-Browser sein!) Und dann Tests auf allen diesen Browsern über die Befehlszeile ausführen.

Es gibt auch ein nettes Plugin für Eclipse.

Für weitere Informationen, wie kontinuierliche Build-Umgebung einzurichten, siehe http://code.google.com/p/js-test-driver/wiki/ContinuousBuild

+0

Igor machte einen schönen Screencast über unser CI: JsTD, Jasmin, Jenkins (Hudson), AngularJS ... http://www.youtube.com/watch?v=5GGMa6mmcg0 – Vojta

Verwandte Themen