[解決済み】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 を使用)の両方に使用することができます。
関連
-
[解決済み】TypeError: $(...).DataTable は関数ではありません。
-
[解決済み】フォームコントロールの値アクセサがない
-
[解決済み】Uncaught TypeError: nullのプロパティ'value'を読み取ることができない
-
[解決済み] React with ES7: Uncaught TypeError: Cannot read property 'state' of undefined [duplicate] (未定義のプロパティ'state'を読み込むことはできません。
-
[解決済み】React.jsの配列の子要素のユニークキーを理解する
-
[解決済み】getElementByIdはnullを返す?[クローズド]
-
[解決済み】エラー:リスン EACCES 0.0.0.0:80 OSx Node.js
-
[解決済み】DOMException: サポートされているソースが見つからなかったため、読み込みに失敗しました。
-
[解決済み】このオブジェクトの "forEach "はなぜ関数でないのですか?
-
[解決済み】Javascript、[オブジェクトHTMLInputElement]を表示中。]
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】TypeError: $(...).DataTable は関数ではありません。
-
[解決済み】Uncaught TypeError: nullのプロパティ'value'を読み取ることができない
-
[解決済み] Uncaught Invariant Violation: 前のレンダリング中よりも多くのフックをレンダリングした
-
[解決済み】別のjsファイル内でJavaScriptの関数を呼び出す
-
[解決済み】Uncaught ReferenceError。Reactが定義されていない
-
[解決済み] エラー。モジュールhtmlが見つからない
-
[解決済み】FirefoxでGoogle Maps V3をリモートで使用すると「googleが定義されていません」と表示される。
-
[解決済み】Jestが予期しないトークンに遭遇した
-
[解決済み】TypeError: res.status は関数ではありません。
-
[解決済み】 \u003C とは何ですか?