web-dev-qa-db-ja.com

すべてのブラウザでユニットテストを実行するにはどうすればよいですか?

私はSeleniumを使用したことがありませんが、すべてのブラウザーでユーザー操作をシミュレートするためのものだと思います。

それは統合テストのようなものです。

しかし、自動化された方法ですべてのブラウザーでjsライブラリ/フレームワーク(単体テスト)をどのようにテストしますか?

48
ajsie

最高のimoはYUIのものです: http://developer.yahoo.com/yui/3/test/ しかし、すべてのブラウザーでユニットテストを行うのはちょっと難しいです...ほとんどの人開発中にそれを使ってテストし、node.jsを使用して、何かが壊れた場合に備えて後でテストします。

7
xavierm02

ユニットテストについては、 http://code.google.com/p/js-test-driver/ を試すことができます。

JsTestDriverは、開始するために必要なすべてを含む単一のJARファイルで構成されています。コマンドラインオプションの詳細については、GettingStartedを参照してください。

JsTestDriverが実行時にどのように機能するかの概要は次のとおりです...

28
Olegas

あなたは見ることができます TestSwarm

私が取り組んでいるプロジェクト:TestSwarm.. ..

その構造は非常に簡単です。これは、実行するテストをさらに探すために中央サーバーに継続的にpingを実行するダムJavaScriptクライアントです。サーバーはテストスイートを収集し、それぞれのクライアントに送信します。

すべてのテストスイートが収集されます。たとえば、1つの「コミット」に10のテストスイートを関連付けることができます(そして、選択したブラウザに配布できます)。

この構造の良いところは、フォールトトレラントな方法で機能できることです。クライアントは行き来することができます。 Firefox 2が接続されていない場合もあれば、30台ある場合もあります。負荷に応じて、ジョブはキューに入れられ、分割されます。さらに、クライアントはモバイルデバイスで実行できるほどシンプルです(完全にテストフレームワークに依存しません)...

13
9ikhan

前の記事で参照された投稿が示唆しているように、 js-test-driver を使用できます。これは特に、複数のブラウザーにわたるJavaScriptユニットテスト用であり、まさに必要なものです。私はそれをいじりました、そしてそれはかなり良いです。しかし、私はその中で深刻な商業的テストを行っていません。

7
Tnem

単体テストの場合、テストを実行するためにブラウザーをロードしないソリューションを検討する必要があります。

あなたはそのためにRhinoUnitのようなものを見ることができます--- http://code.google.com/p/rhinounit

Dojo Object Harness(DOH)ユニットテストフレームワークもご覧ください http://dojotoolkit.org/reference-guide/util/doh.html

ここで同様の質問を見て、TDD jsの方法についてのアイデアを得ることができます- TDD用のJavaScriptユニットテストツール

6
manojlds

もはや積極的にメンテナンスされていませんが、JavaScriptユニットテスト用のJSUnitには満足しています: https://github.com/pivotal/jsunit

これには、ブラウザーで実行できるHTML/Javascriptフレームワークと、antから呼び出すことができるJavaベースのテストランナーの両方が含まれています。

6
nrabinowitz

複数のブラウザーを並行してテストするには、SeleniumGridを使用します。こちらをご覧ください: http://Selenium-grid.seleniumhq.org/step_by_step_installation_instructions_for_windows.html 使用方法の詳細については、こちらをご覧ください。

5
anubhava

私はこれまで使用しておらず、まだベータ版ですが、 FuncUnit は、「qUnit、Selenium、jQueryに基づく機能テストスイート」として宣言しています。

インフォグラフィック それがどのように機能するかを説明することもあります

多分それはあなたが欲しいものですか? github repo はかなりアクティブなようです。

5
knb

Crossbrowsertesting.comが提供する機能を検討する必要があります(無料ではありません)。 jsテストについては、JsUnit(http://www.jsunit.net/)を試してください。

そのホームページから引用

JsUnitは、クライアント側(ブラウザー内)JavaScriptのユニットテストフレームワークです。基本的には、JUnitからJavaScriptへの移植です。また、複数のブラウザーおよび異なる実行の複数のマシンでのテストの実行を自動化するためのプラットフォームも含まれています。 OS。

4
Luixv

http://saucelabs.com クラウドベースのSelenium環境を確認する必要があります。これにより、テストをビルドしてアップロードし、必要な数のブラウザーで実行できます。

4
Siedrix

すでに言われているように、JsTestDriverを使用する必要があります。独自のテストシステムがありますが、Jasmine( http://pivotal.github.com/jasmine/ )などの他のテストライブラリを使用できます。 JsTestDriverのアダプターのリストはここにあります: http://code.google.com/p/js-test-driver/wiki/XUnitCompatibility

3
Mutahhir

QUnit を選択します。これは、jQueryが使用するものです。私はiPhoneやAndroid電話だけでなく、多くのデスクトップブラウザでも実行しました。

いくつかの素晴らしい tutorials があり、 js-test-driver のようなものと簡単に統合できます。 QUnitは、JUnitおよび他のすべてのxUnitテストフレームワーク(PHPUnitなど)をモデルにしているため、APIを簡単に取得できます。

基本的な構文は次のとおりです。

test("my first test", function() {
  var str = "hello";
  equals( "hello", str, "Should be hello" );
});

それもかなり素敵に見えます:

QUnit screenshot

3
dave1010

クロスブラウザテストを専門とする会社はほとんどありません。

http://browserling.com/

http://www.browserstack.com/

http://saucelabs.com/ (すでにここで言及されています)

http://browsershots.org/

http://www.browsercam.com/

http://browserseal.com/

必要なテストライブラリを使用してください。

2
Epeli

SeleniumやSauceLabsなどは単体テストではありません。それらは機能/統合テストソリューションです。

Javascriptをユニットテストするには、DOMなどの外部使用法を抽象化する必要があります。

構成によってjqueryなどの外部ライブラリを使用できるようにテストを記述します。そのため、外部性に触れることなくロジックを単体テストでき、クロスブラウザーテストの両方をテストすることもできます。

1
Inanc Gumus