Einige Fragen:
- In welcher Beziehung stehen Karma und Testframework X (Jasmine, Mocha, QUnit) zueinander?
- Was ist das äquivalente Framework in der Java-Welt? Ich gehe davon aus, dass Jasmine, Mocha, QUnit gleich jUnit / TestNG sind. Wie wäre es mit Karma?
- Kann ich Testframework X (z. B. Jasmine) ohne Karma ausführen?
- Ist Karma für Unit-Test oder Integration / e2e-Test? Diese Referenz zeigt, dass es sich um einen Komponententest handelt , dies gilt jedoch für den e2e-Test.
javascript
unit-testing
integration-testing
Lee Chee Kiam
quelle
quelle
Antworten:
Karma ist ein Browser-Testläufer.
Die Idee ist, dass Browser nicht von Haus aus das Konzept haben, Testdateien zu laden, auszuführen und Ergebnisse zu melden. Was Karma tut, ist (ungefähr):
Betrachten Sie jeden Teil:
(1) Diese Dateien sind Ihre tatsächlichen JS-Dateien. Sie werden Karma sagen, wie man sie lädt. Wenn Sie requirejs verwenden, gibt es ein Karma-Plugin und einige Konfigurationen sind erforderlich.
(2) Diese Tests können in einer Vielzahl von Javascript-Testrahmen (Jasmine, QUnit, Mocha) geschrieben werden. Dies ist JS-Code, der im Browser ausgeführt wird.
(3) Die benutzerdefinierte Webseite ist für jedes Testframework etwas anders. Aus diesem Grund hat Karma Plugins für verschiedene Frameworks.
(4) Karma kann die Seite in vielen Browsern (FF, Chrome oder Headless-Browsern wie PhantomJs) starten.
(5) Die Berichterstattung an Karma ist wiederum rahmenabhängig und wird mit Karma-Plugins behandelt.
Um Ihre Fragen zu beantworten:
quelle
Ein kürzerer Weg, um den Unterschied zu verstehen:
Leute, die mit einfachem Jasmin / Mokka testen, führen höchstwahrscheinlich den gesamten Code mit der virtuellen Node-Maschine aus.
Durch Hinzufügen von Karma zum Mix (zusätzlich zu dem vorhandenen Framework Ihrer Wahl) wird Ihre Testsuite mit der Engine anderer Browser ausgeführt.
Auf diese Weise erhalten Sie die kleinen Extras, die Sie mit einer Browserumgebung erhalten. Es wird einfacher sein, DOM-bezogenen Code zu testen, aber Sie werden auch auf die zusätzlichen Ressourcen verzichten, die von der Node-Engine bereitgestellt werden (wie Dateisystem- / Shell-Zugriff).
quelle
Die These desjenigen, der Karma entworfen hat, war sehr informativ darin, bestehende Lösungen zu beschreiben und zu vergleichen und natürlich Karma selbst zu beschreiben
https://github.com/karma-runner/karma/blob/master/thesis.pdf
Zusammenfassung: Karma ist ein Testläufer. Es kann von QUnit, Jasmine, Mocha, ... verwendet werden. Karma hat Vorteile gegenüber anderen Testläufern, um Ihren TDD / BDD-Entwicklungszyklus zu verbessern. Es "überwacht" Dateien. Wenn Sie also eine Änderung speichern, führt Karma Tests aus und meldet sich sofort zurück, ohne den Kontext zum Webbrowser zu wechseln, um den Test auszuführen.
Kurz gesagt, vielleicht sollte die Frage Karma UND Jasmin oder Mokka oder QUnit sein?
quelle