716 Stimmen

JavaScript-Unit-Test-Tools für TDD

Ich habe mir viele JavaScript-Unit-Tests und Test-Tools angesehen und in Betracht gezogen, konnte aber keine geeignete Option finden, um vollständig TDD-konform zu bleiben. Also, gibt es ein JavaScript-Unit-Test-Tool, das vollständig TDD-kompatibel ist?

1518voto

gregers Punkte 11656

Karma o Winkelmesser

Karma ist ein JavaScript-Test-Runner, der mit Node.js entwickelt wurde und für Unit-Tests gedacht ist.

Der Protractor ist für End-to-End-Tests gedacht und verwendet Selenium Web Driver zur Durchführung von Tests.

Beide wurden vom Angular-Team entwickelt. Sie können jede Assertion-Bibliothek verwenden, die Sie mit beiden wollen.

Screencast: Karma Erste Schritte

zugehörige :

Profis :

  • Verwendet node.js, daher kompatibel mit Win/OS X/Linux
  • Führen Sie Tests von einem Browser oder Headless mit PhantomJS aus
  • Gleichzeitige Ausführung auf mehreren Clients
  • Option zum Starten, Erfassen und automatischen Beenden von Browsern
  • Möglichkeit, Server/Clients auf dem Entwicklungscomputer oder separat zu betreiben
  • Tests von einer Befehlszeile aus ausführen (kann in ant/maven integriert werden)
  • Schreiben von Tests im Stil von xUnit oder BDD
  • Unterstützt mehrere JavaScript-Test-Frameworks
  • Automatischer Start von Tests beim Speichern
  • Proxy-Anfragen domänenübergreifend
  • Individuelle Anpassung möglich:
    • Erweitern Sie es, um andere Test-Frameworks zu verpacken (Jasmine, Mocha, QUnit eingebaut)
    • Ihre eigenen Behauptungen/Widerlegungen
    • Reporter
    • Browser-Launcher
  • Plugin für WebStorm
  • Unterstützt von Netbeans IDE

Nachteile :

mocha.js

Ich bin völlig unqualifiziert, mich zu den Funktionen, Stärken und Schwächen von mocha.js zu äußern, aber es wurde mir gerade von jemandem empfohlen, dem ich in der JS-Community vertraue.

Liste der Funktionen, wie auf der Website angegeben:

  • Browserunterstützung
  • einfache asynchrone Unterstützung, einschließlich Versprechen
  • Testabdeckungsbericht
  • String-Diff-Unterstützung
  • javascript # API für die Durchführung von Tests
  • angemessener Ausstiegsstatus für CI-Unterstützung usw.
  • automatische Erkennung und Deaktivierung der Einfärbung für nicht-ttys
  • ordnet nicht aufgetretene Ausnahmen dem richtigen Testfall zu
  • Unterstützung für asynchrone Testzeitüberschreitungen
  • testspezifische Zeitüberschreitungen
  • Unterstützung von Growl-Benachrichtigungen
  • berichtet über die Dauer der Tests
  • hebt langsame Tests hervor
  • Unterstützung von Dateiüberwachern
  • Erkennung von Lecks in globalen Variablen
  • optional Tests ausführen, die einem Regexp entsprechen
  • automatisches Beenden, um ein "Hängen" in einer aktiven Schleife zu verhindern
  • einfache Meta-Generierung von Suiten und Testfällen
  • Unterstützung der Datei mocha.opts
  • Anklickbare Suitetitel zum Filtern der Testausführung
  • Unterstützung des Node-Debuggers
  • erkennt mehrere Aufrufe von done()
  • jede beliebige Assertion Library verwenden
  • erweiterbare Berichterstattung, gebündelt mit 9+ Reportern
  • erweiterbare Test-DSLs oder "Schnittstellen"
  • vor, nach, vor jedem, nach jedem Haken
  • Unterstützung beliebiger Transpiler (coffee-script usw.)
  • TextMate-Bündel

yolpo

yolpo

Dieser existiert nicht mehr, er leitet weiter zu sequential.js stattdessen

Yolpo ist ein Werkzeug zur Visualisierung der Ausführung von Javascript. Javascript-API-Entwickler werden ermutigt, ihre Anwendungsfälle zu schreiben, um ihre API zu zeigen und zu erklären. Solche Anwendungsfälle bilden die Grundlage für Regressionstests.

AVA

AVA logo

Futuristischer Test Runner mit integrierter Unterstützung für ES2015. Obwohl JavaScript single-threaded ist, kann IO in Node.js aufgrund seiner asynchronen Natur parallel erfolgen. AVA macht sich dies zunutze und führt Ihre Tests gleichzeitig aus, was besonders für IO-lastige Tests von Vorteil ist. Darüber hinaus werden die Testdateien parallel als separate Prozesse ausgeführt, was Ihnen eine noch bessere Leistung und eine isolierte Umgebung für jede Testdatei bietet.

  • Minimal und schnell
  • Einfache Testsyntax
  • Gleichzeitige Durchführung von Tests
  • Erzwingt das Schreiben atomarer Tests
  • Keine impliziten Globals
  • Isolierte Umgebung für jede Testdatei
  • Schreiben Sie Ihre Tests in ES2015
  • Unterstützung versprechen
  • Unterstützung von Generatorfunktionen
  • Unterstützung asynchroner Funktionen
  • Beobachtbare Unterstützung
  • Erhöhte Behauptungen
  • Optional TAP o utput
  • Stack Traces bereinigen

Buster.js

Ein mit Node.js gebauter JavaScript-Testläufer. Sehr modular und flexibel. Es kommt mit seiner eigenen Assertion-Bibliothek, aber Sie können Ihre eigene hinzufügen, wenn Sie möchten. Die Assertions-Bibliothek ist entkoppelt, so dass Sie es auch mit anderen Testläufern verwenden können. Anstelle der Verwendung von assert(!...) o expect(...).not... verwendet er refute(...) was imho eine nette Wendung ist.

Ein Browser-JavaScript-Test-Toolkit. Es macht Browser-Tests mit Browser-Automatisierung (denken Sie JsTestDriver), QUnit Stil statische HTML-Seiten-Tests, Tests in Headless-Browsern (PhantomJS, jsdom, ...), und mehr. Werfen Sie einen Blick auf Die Übersicht !

Ein Node.js-Test-Toolkit. Sie erhalten die gleiche Testfall-Bibliothek, Assertion Bibliothek, etc. Dies ist auch ideal für hybriden Browser- und Node.js-Code. Schreiben Sie Ihren Testfall mit Buster.JS und führen Sie ihn sowohl in Node.js als auch in einem echten Browser aus.

Screencast: Buster.js Erste Schritte (2:45)

Profis :

  • Verwendet node.js, daher kompatibel mit Win/OS X/Linux
  • Tests von einem Browser oder headless mit PhantomJS ausführen (bald)
  • Gleichzeitige Ausführung auf mehreren Clients
  • Unterstützt NodeJS-Tests
  • Server/Clients müssen nicht auf dem Entwicklungscomputer ausgeführt werden (kein IE erforderlich)
  • Tests von einer Befehlszeile aus ausführen (kann in ant/maven integriert werden)
  • Schreiben von Tests im Stil von xUnit oder BDD
  • Unterstützt mehrere JavaScript-Test-Frameworks
  • Tests aufschieben, anstatt sie auszukommentieren
  • SinonJS eingebaut
  • Automatischer Start von Tests beim Speichern
  • Proxies Anfragen domänenübergreifend
  • Anpassungen sind möglich:
    • Erweitern Sie es, um andere Test-Frameworks einzubinden (JsTestDriver eingebaut)
    • Ihre eigenen Behauptungen/Widerlegungen
    • Reporter (xUnit XML, traditionelle Dots, Spezifikation, Tap, TeamCity und mehr eingebaut)
    • Anpassen/Ersetzen des HTML, das für die Ausführung der Browser-Tests verwendet wird
  • Integration von TextMate und Emacs

Nachteile :

  • Noch in der Beta-Phase, kann also fehlerhaft sein
  • Kein Plugin für Eclipse/IntelliJ (bisher)
  • Gruppiert die Ergebnisse nicht nach Betriebssystem/Browser/Version wie TestSwarm *. Es gibt jedoch den Browsernamen und die Version in den Testergebnissen aus.
  • Keine Historie früherer Testergebnisse wie bei TestSwarm *
  • Funktioniert nicht vollständig unter Windows Stand: Mai 2014

* TestSwarm ist auch ein Continuous Integration Server, während Sie für Buster.js einen separaten CI-Server benötigen. Er gibt jedoch xUnit-XML-Berichte aus, so dass die Integration mit Buster.js einfach sein sollte. Hudson , Bamboo oder andere CI-Server.

TestSwarm

https://github.com/jquery/testswarm

TestSwarm wird offiziell nicht mehr aktiv entwickelt, wie auf der GitHub-Webseite angegeben. Sie empfehlen Karma, browserstack-runner, oder Intern.

Jasmin

Jasmine

Dabei handelt es sich um ein verhaltensgesteuertes Framework (siehe Zitat unten), das für Entwickler interessant sein könnte, die mit Ruby oder Ruby on Rails vertraut sind. Die Syntax basiert auf RSpec die für Tests in Rails-Projekten verwendet werden.

Jasmine-Spezifikationen können von einer HTML-Seite (wie bei qUnit) oder von einem Test-Runner (wie bei Karma) ausgeführt werden.

Jasmine ist ein verhaltensgesteuertes Entwicklungs-Framework zum Testen von JavaScript-Code. Es ist nicht von anderen JavaScript-Frameworks abhängig. Es benötigt kein DOM.

Wenn Sie Erfahrung mit diesem Test-Framework haben, tragen Sie bitte mit weiteren Informationen bei :)

Projekt Heimat: http://jasmine.github.io/

QUnit

QUnit konzentriert sich auf das Testen von JavaScript im Browser und bietet dem Entwickler so viel Komfort wie möglich. Klappentext auf der Website:

QUnit ist eine leistungsstarke, einfach zu bedienende JavaScript-Unit-Test-Suite. Sie wird von den Projekten jQuery, jQuery UI und jQuery Mobile verwendet und ist in der Lage, jeden generischen JavaScript-Code zu testen

QUnit hat eine gemeinsame Geschichte mit TestSwarm (siehe oben):

QUnit wurde ursprünglich von John Resig als Teil von jQuery entwickelt. Im Jahr 2008 bekam es sein eigenes Zuhause, einen eigenen Namen und eine eigene API-Dokumentation, so dass auch andere es für ihre Unit-Tests verwenden können. Zu dieser Zeit war es noch von jQuery abhängig. Eine Neufassung im Jahr 2009 hat das behoben, jetzt läuft QUnit völlig eigenständig. Die Assertion-Methoden von QUnit folgen der CommonJS Unit Testing-Spezifikation, die zu einem gewissen Grad von QUnit beeinflusst wurde.

Projekt Heimat: http://qunitjs.com/

Sinon

Ein weiteres großartiges Instrument ist sinon.js von Christian Johansen, dem Autor von Testgetriebene JavaScript-Entwicklung . Am besten von ihm selbst beschrieben:

Eigenständige Test-Spies, Stubs und Mocks für JavaScript. Keine Abhängigkeiten arbeitet mit jedem Unit-Testing-Framework.

Praktikant

Le site Praktikanten-Website bietet einen direkten Funktionsvergleich mit den anderen Test-Frameworks auf dieser Liste. Es bietet von Haus aus mehr Funktionen als jedes andere JavaScript-basierte Testsystem.

JEST

Ein neues, aber dennoch sehr leistungsfähiges Test-Framework. Es ermöglicht auch Snapshot-basierte Tests, was die Testgeschwindigkeit erhöht und eine neue Dynamik in Bezug auf das Testen schafft

Sehen Sie sich einen ihrer Vorträge an: https://www.youtube.com/watch?v=cAKYQpTC7MA

Besser noch: Erste Schritte

1 Stimmen

@gregers: Nein, sie war schon down, als ich diesen Kommentar schrieb, und ist es auch jetzt noch. downforeveryoneorjustme.com/http://testswarm.com

0 Stimmen

@broofa Danke für den Hinweis, aber das ist die TestSwarm-Instanz für jQuery. Das GitHub-Projekt ist nützlicher für diejenigen, die TestSwarm für ihr eigenes Projekt einrichten wollen.

2 Stimmen

Jasmine kann mit V8 headless arbeiten, aber Sie können es auch interaktiv verwenden. Während das DOM in Bezug auf Jasmine nicht notwendig ist, Ihre Codebasis auf DOM zugreifen können. Mit Discipline ist es möglich, Teile des Codes, die auf das DOM zugreifen, zu eliminieren, mit Bedingungen zu versehen oder Mocks bereitzustellen und Tests völlig unabhängig von HTML-Fixtures durchzuführen. Sie können auch Befehlszeilenunterstützung und Fixtures mit Add-ons erhalten.

64voto

Eugene Lazutkin Punkte 43092

Werfen Sie einen Blick auf das Dojo Object Harness (DOH) Unit Test Framework welches ein ziemlich Framework-unabhängiges Harness für JavaScript-Unit-Tests ist und keine Dojo-Abhängigkeiten hat. Es gibt eine sehr gute Beschreibung davon unter Unit-Tests für Web 2.0-Anwendungen mit dem Dojo Objective Harness .

Wenn Sie das Testen der Benutzeroberfläche automatisieren möchten (ein wunder Punkt vieler Entwickler) - sehen Sie sich doh.robot (vorübergehend außer Betrieb. Update: anderer Link http://dojotoolkit.org/reference-guide/util/dohrobot.html ) y dijit.robotx (vorübergehend geschlossen) . Letztere ist für eine Abnahmeprüfung vorgesehen. Aktualisieren:

In den referenzierten Artikeln wird erklärt, wie man sie verwendet, wie man einen Benutzer emuliert, der mit der Maus und/oder der Tastatur mit der Benutzeroberfläche interagiert, und wie man eine Testsitzung aufzeichnet, damit man sie später automatisch abspielen kann.

0 Stimmen

Danke für den Vorschlag von Dojo Object Harness, ich hätte es nie gefunden. Ich schätze die anderen Vorschläge - aber ein Schritt zu einer Zeit.

0 Stimmen

Ich habe dies bereits in einem früheren Projekt verwendet und fand es von unschätzbarem Wert. Aber dann wieder, ich kann nicht vergleichen - habe keine andere TDD-Framework verwendet.

0 Stimmen

Danke für die Meldung toter Links. Ich habe einen von ihnen aktualisiert und werde die Links zu den Robots-Dokumenten ersetzen, sobald sie auf einer neuen Website zu finden sind.

35voto

Matthew Manela Punkte 16422

Chutzpah - Ein JavaScript-Testlaufprogramm

Ich habe ein Open-Source-Projekt namens Chutzpah erstellt, das ein Test-Runner für JavaScript-Unit-Tests ist. Mit Chutzpah können Sie JavaScript-Unit-Tests von der Kommandozeile und innerhalb von Visual Studio ausführen. Es unterstützt auch die Ausführung auf dem TeamCity Continuous Integration Server.

7 Stimmen

Ich habe gerade angefangen, Chutzpah zu verwenden, um Jasmine-Tests innerhalb von Visual Studio auszuführen - es ist schön integriert: Rechtsklick in die Testdatei und wählen Sie 'run js tests' oder 'run JS tests in browser'. Ich führe die gleichen Jasmine-Tests mit JSTestDriver aus. Ich bevorzuge Chutzpah, weil ich oben in der Testdatei angeben kann, welche Dateien geladen werden müssen. Für JSTestDriver benötige ich eine separate Konfigurationsdatei.

28voto

Pete TerMaat Punkte 3135

Der JavaScript-Abschnitt des Wikipedia-Eintrags, Liste der Unit Testing Frameworks bietet eine Liste der verfügbaren Auswahlmöglichkeiten. Sie gibt an, ob sie clientseitig, serverseitig oder beides funktioniert.

15voto

Tauren Punkte 26017

BusterJS

Außerdem gibt es BusterJS von Christian Johansen, dem Autor von Test Driven Javascript Development und dem Sinon Framework. Von der Website:

Buster.JS ist ein neues JavaScript-Test-Framework. Es macht Browser-Tests durch die Automatisierung von Testläufen in tatsächlichen Browsern (denken JsTestDriver), sowie Node.js-Tests.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X