Die Idee ist, dass Browser kein natives Konzept haben, Testdateien zu laden, sie auszuführen und Ergebnisse zu melden. Was Karma tut, ist (ungefähr):
Starten eines kleinen Webservers zum Bereitstellen von “clientseitigen” Javascript-Dateien, die getestet werden sollen (1)
dienen auch den “clientseitigen” Javascript-Dateien mit den Tests (oder Specs, wie sie oft genannt werden) (2)
Bereitstellen einer benutzerdefinierten Webseite, die Javascript-Code fĂĽr die Tests ausfĂĽhrt (3)
Starten Sie einen Browser, um diese Seite zu laden (4)
Melden Sie die Ergebnisse des Tests an den Server (5)
Karma kann die Ergebnisse dann wieder an Textdateien, die Konsole, alles, was Ihr CI-Server mag, usw. melden.
Betrachtet man jedes Teil:
(1) Diese Dateien sind Ihre eigentlichen js-Dateien; Sie werden Karma sagen, wie es sie laden soll. Wenn Sie requirejs verwenden, gibt es ein Karma-Plugin, und einige Konfigurationen sind erforderlich.
(2) Diese Tests können in einer Vielzahl von Javascript-Testframeworks (Jasmine, QUnit, Mocha) geschrieben werden; Dies ist JS-Code, der im Browser ausgeführt wird.
(3) Die benutzerdefinierte Webseite wird fĂĽr jedes Test-Framework etwas anders sein; 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 Framework-abhängig und wird mit Karma-Plugins behandelt.
Also um deine Fragen zu beantworten:
in Java verwenden die meisten Leute JUnit, das sowohl ein Framework zum Schreiben von Tests als auch zum Ausführen von Tests ist, aber nicht das Problem hat, die Umgebung zu unterscheiden, in der Tests ausgeführt werden, und diejenige, in der Testberichte aggregiert werden; Karma wäre das fehlende Stück zwischen einer JUnit Suite und einem JUnit TestRunner
Ja, Sie können alles, was Karma tut, “von Hand” tun – wählen Sie ein Gerüst (Jasmin, Qunit, Mokka) und folgen Sie den Anweisungen. Der Vorteil von Karma besteht darin, dass es eine sofort einsatzbereite Lösung bietet, wenn Sie sich in einem Standard-Setup befinden.
Karma kann sowohl fĂĽr Komponententests (mit Jasmin / qunit / was auch immer) als auch fĂĽr Integrationstests (die eine andere API wie Webdriver verwenden, um den Browser zu steuern) verwendet werden.
Das verdient einen Blogbeitrag oder so.
– Willa
17. November 2015 um 4:55 Uhr
Karma kann die Seite in vielen Browsern (FF, Chrome oder Headless-Browsern wie PhantomJs) starten. hat Jasmine Recht? Wir können es auf vielen Frameworks testen und dieses Setup in conf js auswählen
– Wang’l Pakhrin
27. Juli 2016 um 22:47 Uhr
@Wang’lPakhrin Du kannst Jasmin natürlich mit (m)jedem Browser verwenden. Was ich meinte, war, dass Karma technisch gesehen (viele) beliebige Browser starten kann, in denen Sie testen möchten. Zum Zeitpunkt des Schreibens war Jasmin nicht dafür verantwortlich, Browser tatsächlich zu starten (ich glaube immer noch nicht, dass dies der Fall ist). In der Hoffnung, dass es die Dinge klärt!
Ein kĂĽrzerer Weg, um den Unterschied zu verstehen:
Leute, die mit einfachem Jasmine / Mocha testen, führen höchstwahrscheinlich den gesamten Code mit der virtuellen Node-Maschine aus.
Wenn Sie Karma zum Mix hinzufügen (zusätzlich zu Ihrem bestehenden 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, 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).
mauricio777
Die Diplomarbeit des Typs, der Karma entworfen hat, war sehr informativ bei der Beschreibung bestehender Lösungen und deren Vergleich und natürlich bei der Beschreibung von Karma selbst
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, sodass Karma beim Speichern einer Änderung Tests durchführt und sofort Rückmeldung gibt, ohne dass der Kontext zum Webbrowser gewechselt werden muss, um den Test auszuführen.
Kurz gesagt, vielleicht sollte die Frage Karma UND Jasmin oder Mokka oder QUnit lauten?
Könntest du eine kleine Zusammenfassung, aus dem Link. Das verbessert Ihre Antwort
– Gewinner_Joiner
13. Dezember 2015 um 8:09 Uhr
Kann Karma Jest-Tests durchfĂĽhren?
– SuperUberDuper
14. Dezember 2015 um 12:08 Uhr
Kannst du auch in Jasmine schauen? Ich denke schon, aber ich kann mich nicht erinnern.
– Wang’l Pakhrin
27. Juli 2016 um 22:48 Uhr
@Wang’l Pakhrin Ich weiß nicht, dass Jasmine eine Überwachungsfunktion hat, ich verwende nur nodemon. “nodemon –exec jasmine” und jedes Mal, wenn Sie eine Datei speichern, werden die Tests ausgeführt.
– Schneefroschdev
4. März 2017 um 13:13 Uhr
Die These erwähnt Jasmine nicht.
– Carl G
8. Juni 2017 um 20:37 Uhr
13109400cookie-checkKarma vs. Testframework Jasmine, Mocha, QUnit [closed]yes
Wir betreiben Mokka ohne Karma, aber Viele Entwickler verwenden mehrere Test-Frameworks
– der_rote_baron
23. November 2016 um 1:19 Uhr