1. ホーム
  2. ジャバスクリプト

[解決済み】Karma vs テストフレームワーク Jasmine、Mocha、QUnit【終了しました

2022-04-05 20:24:21

質問

いくつか質問があります。

  • KarmaとテストフレームワークX(Jasmine、Mocha、QUnit)はどのように関係していますか?
  • Javaの世界では、これに相当するフレームワークは何ですか?Jasmine、Mocha、QUnitはjUnit/TestNGに相当すると思います。Karmaはどうでしょうか?
  • Karmaなしで、テストフレームワークX(例:Jasmine)を実行することはできますか?
  • Karmaはユニットテスト用ですか、それともインテグレーション/e2eテスト用ですか?これは 参照 はユニットテスト用であることを示しています。 これ はe2eテスト用と書いてあります。

解決方法は?

Karmaは、ブラウザのテストランナーです。

このアイデアは、ブラウザにはテストファイルを読み込んで実行し、結果を報告するという概念がないことです。 karmaが行うことは、(おおよそ)次のようなことです。

  • テストするクライアントサイドのJavaScriptファイルを提供するために、小さなWebサーバーを起動する (1)。
  • また、テスト(またはSpecsと呼ばれることが多い)を含むquot;クライアントサイド"javascriptファイルを提供します(2)。
  • テスト用の javascript コードを実行するカスタム Web ページを提供します (3)。
  • このページを読み込むためにブラウザを起動する (4)
  • テスト結果をサーバーに報告する(5)
  • karma はその後、テキストファイル、コンソール、CI サーバーが好むものなどに結果を報告することができます。

各パーツを見てみると.

(1) これらのファイルは、あなたの実際のjsファイルです。requirejsを使用している場合は、karmaのプラグインがあり、いくつかの設定が必要です。

(2) これらのテストは、様々なJavascriptテストフレームワーク(Jasmine、QUnit、Mocha)で書くことができます;これは、ブラウザで実行されるJSコードです。

(3) カスタムウェブページは、テストフレームワークごとに少し異なります。

(4) Karmaは多くのブラウザ(FF、Chrome、またはPhantomJsのようなヘッドレスブラウザ)でページを起動することができます。

(5) karmaへの報告は、やはりフレームワークに依存し、karmaのプラグインで対応する。

だから、あなたの質問に答えるために:

  • Javaでは、ほとんどの人がJUnitを使っています。JUnitはテストを書いて実行するフレームワークですが、テストを実行する環境とテストレポートを集計する環境を区別する問題を持っていません ; karmaはJUnit SuiteとJUnit TestRunnerの間に欠けているピースでしょう。
  • フレームワーク(jasmine、qunit、mocha)を選び、指示に従えば、karmaが行うすべてのことを手作業で行うことができます。karmaの利点は、標準的なセットアップであれば、すぐに解決策を提供できることです。
  • Karma はユニットテスト(jasmine / qunit / 何でも)と統合テスト(ブラウザを動かすために webdriver などの別の API を使用)の両方に使用することができます。