web-dev-qa-db-ja.com

Karma vsテストフレームワークJasmine、Mocha、QUnit

いくつか質問:

  • KarmaとテストフレームワークX(Jasmine、Mocha、QUnit)はどのように関連していますか?
  • Javaの世界で同等のフレームワークは何ですか? Jasmine、Mocha、QUnitはjUnit/TestNGに等しいと思います。カルマはどうですか?
  • Karmaを使わずにテストフレームワークX(Jasmineなど)を実行できますか?
  • Karmaは単体テストですか、それとも統合/ e2eテストですか?この 参照 ショーは単体テスト用ですが、 これ はe2e用ですテスト。
242
Lee Chee Kiam

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

その考えは、ブラウザがテストファイルをロードし、それらを実行し、そして結果を報告するという概念を本来持っていないということです。カルマがすることは(大体):

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

各部分を見てください。

(1)これらのファイルは実際のjsファイルになります。あなたはそれらをどのようにロードするかをカルマに伝えます。 requirejsを使うのであれば、カルマプラグインがあり、いくつかの設定が必要です。

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

(3)カスタムWebページはテストフレームワークごとに少し異なります。これが、カルマが異なるフレームワーク用のプラグインを持っている理由です。

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

(5)カルマへの報告は、やはりフレームワークに依存しており、カルマプラグインを扱います。

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

  • javaでは、ほとんどの人がテストを書いて実行するためのフレームワークであるJUnitを使用しますが、テストが実行される環境とテストレポートが集約される環境を区別するという問題はありません。カルマはJUnitスイートとJUnit TestRunnerの間で欠けている部分になるでしょう
  • はい、あなたはカルマが「手作業で」行うすべてのことをすることができます - 1つのフレームワーク(jasmine、qunit、mocha)を選んで指示に従ってください。カルマの利点は、標準的な設定であればすぐに使えるソリューションを提供できることです。
  • Karmaは単体テスト(jasmine/qunit/whateverを使用)と統合テスト(webdriverのような別のAPIを使用してブラウザを駆動する)の両方に使用できます。
392
phtrivier

違いを理解するための1つの短い方法:

普通のJasmine/Mochaを使ってテストしている人はたぶんNode仮想マシンですべてのコードを実行しています。

Karmaをミックスに追加すると(既存の選択したフレームワークの上に)、他のブラウザのエンジンでテストスイートが実行されます。

こうすることで、ブラウザ環境で得られるちょっとした追加機能を手に入れることができます。 DOM関連のコードをテストする方が簡単ですが、Nodeエンジンによって与えられた追加のリソース(ファイルシステム/シェルアクセスなど)をあきらめることにもなります。

64
SystematicFrank

カルマを設計した男の論文は、既存の解決策を説明し、それらを比較すること、そしてもちろんカルマ自体を説明することにおいて非常に有益でした。

https://github.com/karma-runner/karma/blob/master/thesis.pdf

概要:カルマはテストランナーです。 QUnit、Jasmine、Mochaなどで使用できます。カルマは他のテストランナーにとってTDD/BDD開発サイクルを改善するという利点があります。ファイルを「監視」するので、変更を保存すると、Karmaはテストを実行して即座にレポートを返します。テストを実行するためにコンテキストをWebブラウザに切り替えることはありません。

要するに、おそらく質問はカルマANDジャスミンかモカかQUnitか?

30
mauricio777