私は多くのJavaScriptユニットテストとテストツールを調査して検討しましたが、完全にTDDに準拠するための適切なオプションを見つけることができませんでした。では、TDDに完全に準拠したJavaScript単体テストツールはありますか?
私は多くのJavaScriptユニットテストとテストツールを調査して検討しましたが、完全にTDDに準拠するための適切なオプションを見つけることができませんでした。では、TDDに完全に準拠したJavaScript単体テストツールはありますか?
回答:
KarmaはNode.jsで構築されたJavaScriptテストランナーであり、ユニットテスト用です。
Protractorはエンドツーエンドのテスト用で、Selenium Web Driverを使用してテストを実行します。
どちらもAngularチームによって作成されました。どちらでも、任意のアサーションライブラリを使用できます。
スクリーンキャスト:Karmaはじめに
関連:
長所:
短所:
mocha.jsの機能、長所、短所についてコメントする資格はまったくありませんが、JSコミュニティで信頼している誰かから勧められただけです。
ウェブサイトで報告されている機能のリスト:
これは存在しなくなり、代わりに順次 .jsにリダイレクトされます
Yolpoは、JavaScriptの実行を視覚化するツールです。JavaScript API開発者は、APIを表示して伝えるためのユースケースを作成することをお勧めします。このようなユースケースは、回帰テストの基礎を形成します。
ES2015のサポートが組み込まれた未来的なテストランナー。JavaScriptはシングルスレッドですが、非同期の性質により、Node.jsのIOは並行して発生する可能性があります。AVAはこれを利用してテストを同時に実行します。これは、IO負荷の高いテストに特に有益です。さらに、テストファイルは個別のプロセスとして並行して実行されるため、各テストファイルのパフォーマンスと分離された環境がさらに向上します。
Node.jsで構築されたJavaScriptテストランナー。非常にモジュール式で柔軟性があります。独自のアサーションライブラリが付属していますが、必要に応じて独自に追加できます。アサーションライブラリは切り離されているので、あなたは、他のテストランナーでそれを使用することができます。代わりに使用するのassert(!...)
かexpect(...).not...
、それは使用していますrefute(...)
素敵なツイスト私見です。
ブラウザのJavaScriptテストツールキット。ブラウザーの自動化(JsTestDriverなど)によるブラウザーのテスト、QUnitスタイルの静的HTMLページのテスト、ヘッドレスブラウザー(PhantomJS、jsdomなど)でのテストなどを行います。見てください概要を!
Node.jsテストツールキット。同じテストケースライブラリ、アサーションライブラリなどを取得できます。これは、ハイブリッドブラウザやNode.jsコードにも最適です。Buster.JSを使用してテストケースを作成し、Node.jsと実際のブラウザーの両方で実行します。
スクリーンキャスト:Buster.jsはじめに(2:45)
長所:
短所:
* TestSwarmは継続的インテグレーションサーバーでもありますが、Buster.jsには別のCIサーバーが必要です。ただし、xUnit XMLレポートを出力するため、Hudson、Bamboo、またはその他のCIサーバーとの統合は簡単です。
https://github.com/jquery/testswarm
TestSwarmは、GitHubのWebページに記載されているように、正式には開発されていません。彼らはKarma、browserstack-runner、またはInternを推奨しています。
これは、RubyまたはRuby on Railsに精通している開発者を対象とする可能性がある、振る舞い駆動型のフレームワークです(以下の引用に記載されています)。構文は、Railsプロジェクトでのテストに使用されるRSpecに基づいています。
Jasmine仕様は、HTMLページ(qUnit形式)またはテストランナー(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のアサーションメソッドは、CommonJSユニットテスト仕様に準拠しています。これは、ある程度QUnitの影響を受けていました。
プロジェクトホーム:http : //qunitjs.com/
別の優れたツールは、Test-Driven JavaScript Developmentの作者であるChristian Johansenによるsinon.jsです。自分で最もよく説明:
JavaScriptのスタンドアロンテストスパイ、スタブ、モック。単体テストフレームワークでは、依存関係は機能しません。
インターン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を操作するユーザーをエミュレートする方法、テストセッションを記録して後で自動的に「再生」できるようにする方法について説明しています。
JavaScriptユニットテストのテストランナーであるChutzpahというオープンソースプロジェクトを作成しました。Chutzpahを使用すると、コマンドラインおよびVisual Studioの内部からJavaScript単体テストを実行できます。また、TeamCity継続的統合サーバーでの実行もサポートします。
ウィキペディアエントリのJavaScriptセクションである「ユニットテストフレームワークのリスト」は、利用可能な選択肢のリストを提供します。クライアント側、サーバー側、またはその両方で機能するかどうかを示します。
テスト駆動Javascript開発とSinonフレームワークの作者であるChristian JohansenによるBusterJSもあります。サイトから:
Buster.JSは、新しいJavaScriptテストフレームワークです。実際のブラウザー(JsTestDriverなど)でのテストの実行を自動化することにより、ブラウザーのテストとNode.jsのテストを行います。
GoogleがリリースしたJavaScriptテストフレームワーク:https : //github.com/google/gjstest
- ブラウザを実行する必要なしに、テストの起動と実行に非常に高速な時間。
- テストが成功した場合と失敗した場合の両方の場合の、クリーンで読みやすい出力。
- ブラウザベースのテストランナー JSが変更されるたびに、単純にリフレッシュすることができます。
- Google Test for C ++に似たスタイルとセマンティクス。
- Aは内蔵の最小限の定型的なコードを必要とフレームワーク(例えば無からかっ
$tearDown
たり$verifyAll
に基づいたスタイルと意味を持つ)GoogleのC ++モッキングフレームワークを。
現在、Windows用のバイナリはありません
あなたはプロとして「実際のブラウザで実行する」ことを持っていますが、私の経験では遅いのでそれは欠点です。しかし、それを価値のあるものにしているのは、ブラウザ以外の選択肢からの十分なJSエミュレーションがないことです。JSが非常に複雑で、ブラウザー内テストだけで十分な場合は、さらに考慮すべきオプションがいくつかあります。
HtmlUnit:「かなり良いJavaScriptサポート(常に改善されています)を備えており、使用する構成に応じてFirefoxまたはInternet Explorerをシミュレートする、非常に複雑なAJAXライブラリでも動作します。」そのエミュレーションがあなたの使用に十分である場合、ブラウザを駆動するよりもはるかに高速になります。
しかし、おそらくHtmlUnitは十分なJSサポートを備えていますが、Javaは好きではありませんか?次に多分:
セレリティ:ワチールのAPIのJRuby上で実行されているがHtmlUnitに裏打ちされました。
または同様に
Schnell:HtmlUnitの別のJRubyラッパー。
もちろん、HtmlUnitが十分ではなく、ブラウザーを駆動する必要がある場合は、WatirでJSを駆動することを検討してください。
YUIにはテストフレームワークもあります。 Yahoo!からのこのビデオ 劇場は素晴らしい導入ですが、前もってTDDに関する基本事項はたくさんあります。
このフレームワークは汎用的で、JavaScriptまたはJSライブラリに対して実行できます。
JUnit統合をJava to JavascriptコードジェネレーターST-JS(http://st-js.org)に追加しました。フレームワークは、テストされたコードと単体テストの両方に対応するJavascriptを生成し、そのコードを別のブラウザーに送信します。
単体テストランナーは必要なhttpポートを開くので(テストが終了したら閉じる)、別のサーバーは必要ありません。フレームワークはJavaスタックトレースを操作して、失敗したアサーションがJUnit Eclipseプラグインによって正しく表示されるようにします。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;
}
}
MochiKitには、SimpleTestと呼ばれるテストフレームワークがあり、普及しているようです。これは、元の著者からのブログ投稿です。