エンドツーエンドのテストにProtractorまたはKarmaを使用する必要がありますか?[閉まっている]


124

エンドツーエンドのテストにProtractorまたはKarmaを使用する必要がありますか?

Angular-seedはProtractor / Selenium WebDriver for E2Eを使用していますが、angular-phonecatチュートリアルではカルマを使用しています。

ユニットテストにはKarmaを、E2EにはProtractorを使用する必要があると読みましたが、これは問題ないようですが、他の開発者の意見を得るためにここでお願いしたいと思いました。


1
ソフトウェアの推奨事項により適しています。ただし、この質問を投稿する場合は、要件を詳しく説明する必要があります。関連メタ
Allman教授2014

5
KarmaとProtractorはどちらもAngularチームによって使用および推奨されていますが、ドキュメントの状態(つまり、膨大な量があり、何が最新であるかを知るのが難しい)を考えると、どちらをどの目的で使用するかを知ることは困難です。これは良い質問で、glpretreの答えもまさに私が探していたものでした。
2014

5
質問が広すぎたとは思いません(分度器vsカルマ)。これは、一部のソフトウェアだけでなく、ここで説明しているフレームワークなので、問題は適切な場所にあります。
CCC

KarmaとProtractorの使用例、利点、制限の詳細については、こちらの回答をご覧ください。stackoverflow.com/ a / 29619467/1614973
Dmitri Zaitsev

私の理解では、プロトラクターは残りの部分(モックなど)が存在しない場合、アプリの一部のみをテストすることを許可していません。テストコードは、アプリケーションと同じJSインタープリターで実行されていません。ソースコードの変更や影響を受けるテストの自動再トリガーを監視するファイルシステムはありません。Karmaはこれらを提供します。<script>内のテストコードとアプリコードをブラウザーに送信して、同じインタープリターで実行し、モックを作成できるようにしますが、実際のユーザーが動作している場合のように、ネイティブイベントを使用したエンドツーエンドのテスト用には設計されていません。
robert4

回答:


179

AngularJSチームは、角度シナリオランナーを置き換えるため、Protractorを使用することをお勧めします。

Angular Scenario Runnerはメンテナンスモードです-新しいAngularプロジェクトを開始する場合は、分度器の使用を検討してください。

AngularJsのドキュメントから引用。

チュートリアルangular-phonecatは、かなり前に(主に2011年に)開発されたもので、ProtractorなどのAngularの新機能を使用するように更新されていません。

編集

分度器ドキュメント- FAQ

なぜカルマと分度器の両方なのか?いつ使用しますか?

Karmaは単体テストに最適なツールであり、Protractorはエンドツーエンドまたは統合テストを対象としています。つまり、個々のコントローラー、ディレクティブ、およびサービスのロジックの小規模なテストは、Karmaを使用して実行する必要があります。アプリケーション全体の実行中のインスタンスがある大きなテストは、Protractorを使用して実行する必要があります。Protractorは、ユーザーの観点からテストを実行することを目的としています。テストが、アプリケーションを操作する人間の指示として書き留められる場合、Protractorで作成されたエンドツーエンドのテストでなければなりません。

詳細はこちらのブログ投稿をご覧ください。


11
Karma FAQから-karma-runner.github.io/0.10/intro/faq.html-Karmaを使用してエンドツーエンドのテストを実行できますか?Karmaは主に低レベル(ユニット)テスト用に設計されています。AngularJSアプリの場合は、karma-ng-scenarioプラグインでKarmaを使用できますが、高レベルのテストにはProtractorをお勧めします。
mrwaim

単体テストとe2eテストが必要な場合は、単体テスト用にカルマ環境を構成し、UIテストまたはe2eテスト用に分度器を構成する必要がありますか?
Sunil Garg

2
@SunilGargはい、必要です。おそらく、スターターアプリの構造が役立つかもしれません:github.com/glepretre/angular-requirejs-ready(使用しない場合はrequireJSの詳細を無視してください)
glepretre
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.