Karma対テストフレームワークJasmine、Mocha、QUnit [終了]


258

いくつかの質問:

  • KarmaとテストフレームワークX(Jasmine、Mocha、QUnit)は互いにどのように関連していますか?
  • Javaの世界で同等のフレームワークは何ですか?Jasmine、Mocha、QUnitはjUnit / TestNGに等しいと想定しています。カルマはどうですか?
  • KarmaなしでテストフレームワークX(例:Jasmine)を実行できますか?
  • Karmaは単体テストまたは統合/ e2eテスト用ですか?この参照はユニットテスト用ですが、これはe2eテスト用です。

回答:


419

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

ブラウザーには、テストファイルの読み込み、実行、および結果の報告という概念がブラウザーに本来備わっていないという考え方です。カルマがすることは(おおよそ):

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

各部を見る:

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

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

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

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

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

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

  • Javaでは、ほとんどの人がテストを記述して実行するフレームワークであるJUnitを使用しますが、テストが実行される環境とテストレポートが集約される環境を区別するという問題はありません。カルマは、JUnit SuiteとJUnit TestRunnerの間に欠けている部分です
  • はい、カルマが「手動」で行うすべてのことを実行できます。1つのフレームワーク(ジャスミン、qunit、モカ)を選び、指示に従ってください。カルマの利点は、標準的なセットアップをしている場合に、すぐに使えるソリューションを提供することです。
  • Karmaは、ユニットテスト(jasmine / qunit /を使用)と統合テスト(webdriverなどの別のAPIを使用してブラウザーを駆動する)の両方に使用できます。

59
これはブログ投稿か何かに値する。
ウィラ、

Karmaは多くのブラウザ(FF、Chrome、またはPhantomJsなどのヘッドレスブラウザ)でページを起動できますか?じゃあジャスミンは正しいの?多くのフレームワークでテストし、conf jsでその設定を選択できます
Wang'l Pakhrin

1
@ Wang'lPakhrinもちろん、(m)任意のブラウザでジャスミンを使用できます。私が意味したことは、技術的には、カルマはテストしたいブラウザーを起動できるということです。執筆時点では、ジャスミンは実際にブラウザを起動する責任はありませんでした(私はまだそうは思いません)。
phtrivier

thejsguy.com/2015/01/12/jasmine-vs-mocha-chai-and-sinon.html "ジャスミンvs.モカ、チャイ、シノン"
escapedcat

1
@Willa私はこの答えyoutube.com/watch?v=bJc078szrZAに基づいてyoutube vidを作成しました:)
ベルリング

70

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

プレーンなJasmine / Mochaでテストしている人々は、おそらくすべてのコードをNode仮想マシンで実行しています。

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

これを行うことで、ブラウザ環境で得られる小さな追加機能を利用できます。DOM関連のコードをテストする方が簡単ですが、ノードエンジンによって提供される追加のリソース(ファイルシステムやシェルアクセスなど)も放棄します。


34

カルマを設計した男の論文は、既存のソリューションを説明し、それらを比較すること、そしてもちろんカルマ自体を説明することにおいて非常に有益でした

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

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

要するに、おそらく質問はカルマANDジャスミンまたはモカまたはQUnitである必要がありますか?


2
リンクから、簡単な要約をいただけますか。それはあなたの答えを改善
winner_joiner

1
KarmaはJestテストを実行できますか?
SuperUberDuper

あなたもジャスミンで見ることができますか?私はそう思うが、私は静かに覚えていない。
Wang'l Pakhrin 16

@ Wang'l Pakhrin Jasmineに監視機能があることは知りませんが、nodemonを使用します。"nodemon --exec jasmine"そしてファイルを保存するたびにテストを実行します。
snowfrogdev 2017年

論文はジャスミンに言及していません。
Carl G
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.