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):
- Starten eines kleinen Webservers zur Bereitstellung von "clientseitigen" zu testenden Javascript-Dateien (1)
- Stellen Sie auch die "clientseitigen" Javascript-Dateien mit den Tests (oder Spezifikationen, wie sie oft genannt werden) bereit (2)
- eine benutzerdefinierte Webseite bereitstellen, auf der Javascript-Code für die Tests ausgeführt wird (3)
- Starten Sie einen Browser, um diese Seite zu laden (4)
- Melden Sie die Testergebnisse dem Server (5).
- Karma kann die Ergebnisse dann erneut an Textdateien, die Konsole, alles, was Ihr CI-Server mag, usw. melden.
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:
- In Java verwenden die meisten Benutzer JUnit, das sowohl ein Framework zum Schreiben als auch zum Ausführen von Tests ist, jedoch nicht das Problem hat, die Umgebung, in der Tests ausgeführt werden, und die Umgebung, in der Testberichte aggregiert werden, zu unterscheiden. Karma wäre das fehlende Teil zwischen einer JUnit Suite und einem JUnit TestRunner
- Ja, Sie können alles tun, was Karma "von Hand" tut - wählen Sie ein Gerüst (Jasmin, Qunit, Mokka) und befolgen Sie die 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 Unit-Tests (mit Jasmin / Qunit / was auch immer) als auch für Integrationstests (bei denen eine andere API wie ein Webdriver verwendet wird, um den Browser zu steuern) verwendet werden.