最近、JavaScript のテストを行う方法を探していました。xUnit 系の
JsUnit や
MochiKit に付属してくるテストフレームワークが有名どころのようです。とりあえずテスト用のメソッド名になじみのある JsUnit を使ってみることにします。
■ 目的
alert デバッグから開放される!
■ この記事に書かれていること
・ JsUnit の基本的な情報
・ 複数のテストファイルを同時に実行する方法
・ testRunner.html で毎回テストファイル名を指定しないでテストを実行する方法
■ JsUnit の概要
まず、testRunner.html というテストランナーが存在します。html ファイルの script タグ内にテストコードを書いて、テストランナーにテストファイル(html)を指定すると、テストコードを実行するという仕組みになっています。
まずは動かしてみてください。JsUnit を DL すると、testRunner.html というファイルが含まれているので、このファイルをブラウザで開いてください。テストファイル名の入力を促されるので、tests フォルダ内の適当な html ファイル(テストファイル)をフルパス指定して、Run ボタンを押してください。見慣れたグリーンバーが表示されるはずです。
テストの書き方は、テストファイルを見ればわかります。イメージとしては以下のようなコードになります。
<script language="JavaScript" type="text/javascript"
src="./framework/app/jsUnitCore.js">
</script>
<script language="JavaScript" type="text/javascript">
function testAssert() {
assert("true should be true", true);
assert(true);
}
</script>
■ テストのディレクトリ構造
とりあえず、私は以下のような構造にしてみました。
+ e:\tests
+ framework <- ここに testRunner.html など JsUnit の全てのファイル/フォルダを入れる
- tests.html <- テストコードの一覧を持つ
- xxxTest.html <- テストコード
■ suite を使って複数のテストファイルを実行する
複数のテストファイルを同時に実行するには、tests.html に以下のように書いて、tests.html を testRunner.html 実行してください。
<script language="JavaScript" type="text/javascript"
src="./framework/app/jsUnitCore.js">
</script>
<script language="JavaScript" type="text/javascript">
function suite(){
var newsuite = new top.jsUnitTestSuite();
newsuite.addTestPage("../xxxTest.html");
return newsuite;
}
</script>
テストファイル名を指定する際、tests.html からではなく、testRunner.html からの相対パスを指定していることに注意してください。
■ URL にテストファイル名を含めることで、毎回の入力を回避する
毎回 testRunner.html にテストファイル名を入力するのが面倒なので、URL のパラメータ「testpage」を指定すると、ファイル名を自動的に入力してくれます。以下のような URL を作成してお気に入りに入れておくと良いでしょう。
URL の例:file:///E:/tests/framework/testRunner.html?testpage=E:/tests/tests.html
■ 参考
Javascript/JsUnit - Bobchin's Wiki
http://bobchin.ddo.jp/wiki/index.php?Javascript%2FJsUnit