私は多くのJavaScript単体テストおよびテストツールを調べて検討しましたが、完全にTDDに準拠するための適切なオプションを見つけることができませんでした。 TDDに完全に準拠したJavaScriptの単体テストツールはありますか?
Karmaは、Node.jsを使用して構築された単体テスト用のJavaScriptテストランナーです。
分度器は、エンドツーエンドのテスト用であり、テストを推進するためにSelenium Web Driverを使用します。
両方ともAngularチームによって作られました。どちらのアサーションライブラリでも使用できます。
スクリーンキャスト: カルマはじめに
関連 :
長所 :
短所 :
Mocha.jsの機能、長所、および短所についてコメントするのは完全に無資格ですが、JSコミュニティを信頼する人から勧められただけです。
Webサイトで報告されている機能の一覧
これはもう存在せず、代わりに sequential.js にリダイレクトします
Yolpoは、JavaScriptの実行を視覚化するためのツールです。 Javascript API開発者は、自分のAPIを表示して伝えるためにユースケースを書くことをお勧めします。このようなユースケースは回帰テストの基礎を形成します。
ES2015をサポートする未来的なテストランナー。 JavaScriptがシングルスレッドであっても、Node.jsのIOはその非同期性のために並行して発生する可能性があります。 AVAはこれを利用してテストを同時に実行します。これはIO重いテストに特に役立ちます。さらに、テストファイルは別々のプロセスとして並行して実行されるため、各テストファイルのパフォーマンスと分離環境がさらに向上します。
Node.jsで構築されたJavaScriptテストランナー。非常にモジュラーで柔軟性があります。それ自身のアサーションライブラリが付属していますが、あなたが好きならあなたはあなた自身のものを追加することができます。 アサーションライブラリ は分離されているので、他のテストランナーでも使用できます。 assert(!...)
やexpect(...).not...
を使う代わりに、Nice twist imhoであるrefute(...)
を使います。
ブラウザのJavaScriptテストツールキット。ブラウザ自動化によるブラウザテスト(JsTestDriverと思う)、QUnitスタイルの静的HTMLページテスト、ヘッドレスブラウザ(PhantomJS、jsdomなど)でのテストなどを行います。 概要 を見てください。
Node.jsテストツールキット同じテストケースライブラリ、アサーションライブラリなどが得られます。これは、ハイブリッドブラウザやNode.jsコードにも適しています。テストケースをBuster.JSで書き、Node.jsと実際のブラウザの両方で実行します。
スクリーンキャスト: Buster.jsはじめに (2:45)
長所 :
短所 :
* TestSwarmはContinuous Integrationサーバーでもありますが、Buster.jsには別のCIサーバーが必要です。ただし、xUnitのXMLレポートは出力されるため、 Hudson 、 Bamboo 、または他のCIサーバーと統合するのは簡単なはずです。
https://github.com/jquery/testswarm
GitHubのWebページに記載されているように、TestSwarmは正式に開発中ではありません。彼らはKarma、browserstack-runner、またはInternを推薦します。
これは振る舞い主導のフレームワークであり(以下の引用で述べる)、RubyやRuby on Railsに精通している開発者にとっては興味深いかもしれません。構文はRailsプロジェクトでのテストに使用される RSpec に基づいています。
Jasmineの仕様は、(qUnit形式で)HTMLページから、または(Karmaとして)テストランナーから実行できます。
JasmineはあなたのJavaScriptコードをテストするための振る舞い駆動開発フレームワークです。他のJavaScriptフレームワークには依存しません。 DOMは必要ありません。
このテストフレームワークの経験がある場合は、さらに情報を投稿してください:)
プロジェクトホーム: http://jasmine.github.io/
QUnitは、ブラウザでJavaScriptをテストすることに重点を置きながら、開発者にできるだけ便利な機能を提供します。サイトからの流れ:
QUnitは、強力で使いやすいJavaScript単体テストスイートです。 jQuery、jQuery UI、およびjQuery Mobileプロジェクトで使用され、一般的なJavaScriptコードをテストすることができます。
QUnitはTestSwarm(上記)といくつかの歴史を共有しています。
QUnitはもともとjQueryの一部としてJohn Resigによって開発されました。 2008年には、独自のホーム、名前、およびAPIドキュメントを入手し、他のユーザーが自分のユニットテストにも使用できるようにしました。当時はまだjQueryに依存していました。 2009年の書き直しで、QUnitは完全にスタンドアロンで動作するようになりました。 QUnitのアサーションメソッドは、ある程度はQUnitの影響を受けていたCommonJS単体テスト仕様に従います。
プロジェクトホーム: http://qunitjs.com/
もう1つの優れたツールは、 テスト駆動型JavaScript開発 の作者であるChristian Johansenによる sinon.js です。自分で最もよく説明されている:
JavaScript用のスタンドアロンのテストスパイ、スタブ、およびモック。どの単体テストフレームワークでも依存関係は機能しません。
Intern Webサイト はこのリストの他のテストフレームワークとの直接的な機能比較を提供します。他のJavaScriptベースのテストシステムよりもすぐに使える機能が追加されています。
新しいがまだ非常に強力なテストフレームワーク。スナップショットベースのテストも可能になり、これによりテストのスピードが上がり、テストの観点から新しい力学が生まれます。
彼らの話の1つをチェックしてください: https://www.youtube.com/watch?v=cAKYQpTC7MA
さらに良いことに: はじめに
Dojo Object Harness(DOH)単体テスト・フレームワーク を見てください。これは、JavaScript単体テストのためのフレームワークに依存しないハーネスであり、Dojoの依存関係はありません。それについての非常に良い説明が Dojo Objective Harnessを使ったWeb 2.0アプリケーションの単体テスト にあります。
もしあなたがUIテストを自動化したいのであれば(多くの開発者の苦痛な点です) - doh.robot (一時的に更新します。他のリンク http://dojotoolkit.org/) reference-guide/util/dohrobot.html ) および dijit.robotx (一時停止中) 後者は受け入れテストのために設計されています。更新:
参照されている記事はそれらを使う方法、マウスやキーボードを使ってあなたのUIと対話するユーザーをエミュレートする方法、そしてテストセッションを記録する方法を説明します。
私はChutzpahというオープンソースプロジェクトを作成しました。これはJavaScriptの単体テストのテストランナーです。 Chutzpahを使用すると、コマンドラインとVisual Studioの内部からJavaScriptの単体テストを実行できます。 TeamCity継続的インテグレーションサーバーでの実行もサポートしています。
ウィキペディアのエントリーのJavaScriptセクション、 ユニットテストフレームワークのリスト は、利用可能な選択肢のリストを提供します。クライアント側、サーバー側、またはその両方で機能しているかどうかを示します。
テスト駆動型Javascript開発およびSinonフレームワークの作者であるChristian Johansenによる BusterJS もあります。サイトから:
Buster.JSは新しいJavaScriptテストフレームワークです。それはNode.jsテストと同様に実際のブラウザ(JsTestDriverと思う)でテストランを自動化することによってブラウザテストをします。
GoogleがリリースしたJavaScriptテストフレームワーク: https://github.com/google/gjstest
- ブラウザを実行することなく、非常に速いテストの起動と実行時間。
- 合格テストと不合格テストの両方の場合に、きれいで読みやすい出力。
- ブラウザベースのテストランナー JSが変更されるたびに簡単に更新できます。
- Google Test C++に似たスタイルとセマンティクス。
- Google C++ Mocking Framework に基づくスタイルとセマンティクスを持つ最小限の定型コード(たとえば
$tearDown
や$verifyAll
)を必要とする組み込みのモックフレームワーク.
現在Windows用のバイナリはありません
私たちは今PavlovとJSTestDriverと一緒にQunitを使っています。このアプローチは私達にとってはうまくいきます。
あなたはプロとして「実際のブラウザで走る」ことを持っています、しかし私の経験ではそれが遅いので詐欺です。しかし、それを価値あるものにしているのは、ブラウザ以外の選択肢からの十分なJSエミュレーションの欠如です。あなたのJSがブラウザ内テストだけで十分であるほど十分に複雑であるなら、それは考えられるかもしれませんが、考慮すべきより多くの選択肢があります:
HtmlUnit : "それはかなり良いJavaScriptサポート(絶えず改良されています)を持ち、あなたが望む設定に応じてFirefoxかInternet Explorerのどちらかをシミュレートして、かなり複雑なAJAXライブラリでさえ動作することができますつかいます。"そのエミュレーションがあなたの使用に十分に適しているなら、それはブラウザを運転するよりはるかに速いでしょう。
しかしHtmlUnitは十分なJSサポートを持っているかもしれませんが、あなたはJavaが好きではありませんか?それから多分:
Celerity :HtmlUnitに支援されたJRuby上で動作するWatir API。
または同様に
Schnell :HtmlUnitの別のJRubyラッパー。
もちろん、HtmlUnitが十分ではなく、ブラウザを駆動する必要がある場合は、 WatirでJSを駆動することを検討してください 。
YUIには テストフレームワーク があります。 このビデオ Yahoo!からTDDについての基本はたくさんありますが、Theatreはいい紹介です。
このフレームワークは一般的なものであり、任意のJavaScriptまたはJSライブラリに対して実行できます。
私達はJavascriptコードジェネレータST-JS( http://st-js.org )への私達のJavaへのJUnit統合を追加しました。フレームワークは、テストされたコードと単体テストの両方に対して対応するJavascriptを生成し、そのコードをさまざまなブラウザに送信します。
単体テストランナーが必要なhttpポートを開く(そしてテストが終了したらそれを閉じる)ので、別のサーバーは必要ありません。失敗したアサーションがJUnit Eclipseプラグインによって正しく表示されるように、フレームワークはJavaスタックトレースを操作します。これがjQueryとMockjaxの簡単な例です。
@RunWith(STJSTestDriverRunner.class)
@HTMLFixture("<div id='fortune'></div>")
@Scripts({ "classpath://jquery.js",
"classpath://jquery.mockjax.js", "classpath://json2.js" })
public class MockjaxExampleTest {
@Test
public void myTest() {
$.ajaxSetup($map("async", false));
$.mockjax(new MockjaxOptions() {
{
url = "/restful/fortune";
responseText = new Fortune() {
{
status = "success";
fortune = "Are you a turtle?";
}
};
}
});
$.getJSON("/restful/fortune", null, new Callback3<Fortune, String, JQueryXHR>() {
@Override
public void $invoke(Fortune response, String p2, JQueryXHR p3) {
if (response.status.equals("success")) {
$("#fortune").html("Your fortune is: " + response.fortune);
} else {
$("#fortune").html("Things do not look good, no fortune was told");
}
}
});
assertEquals("Your fortune is: Are you a turtle?", $("#fortune").html());
}
private static class Fortune {
public String status;
public String fortune;
}
}
qooxdoo の一部である単体テストフレームワーク、Dojo、ExtJSなどに似たオープンソースのRIAフレームワークにも興味があるかもしれませんが、かなり包括的なツールチェーンがあります。
testrunner のオンライン版を試してください。ヒント:左上の灰色の矢印をクリックします(もっとはっきりさせる必要があります)。選択したテストを実行する「再生」ボタンです。
単体テストを定義するためのJSクラスの詳細については、オンラインの APIビューア を参照してください。
自動化されたUIテスト(Selenium RCベース)については、 Simulator プロジェクトを調べてください。