週に一回は書きますよ 月に4つ記事を書けばノルマは満たされます。
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Haskell Hackathonの関係で、javascriptで単体テストがしたくなりました。調べたところSeleniumがかなりヒットします。しかしちょっとやりたいことと違う気がするのでとりあえずJSUnitから試してみます。

とりあえずjsunit2.2alpha11.zipをdlして適当なところに展開します。これでインストールは終了。多分javaとjavascriptを使えるブラウザがあれば十分です。

テストのテストにテストを書いてみます。とりあえず自明なテストを書いてどう動くか試してみます。

<html>
  <head>
    <title>Test page for trying myTestFunction</title>
    <script language="javascript" src="../jsUnit/app/jsUnitCore.js"></script>
  </head>
  <body>
<script language="javascript"><!--
function f(a, b) {
    if (b == 0) return a;
    else return f(b, a%b);
}
function testWithOne() {
    assertEquals("f(1, 1) == 1", 1, f(1, 1));
    assertEquals("f(_, 1) == 1", 1, f(6, 1));
    assertEquals("f(1, _) == 1", 1, f(1, 7));
}

function testWithMultiple() {
    assertEquals("f(a*b, a) == a", 7, f(119, 7));
    assertEquals("f(a, a*b) == a", 17, f(17, 221));
}

function testWithRandom() {
    assertEquals("f(324, 156) == 12", 12、 f(324, 156));
    assertEquals("f(261, 549) == 9", 9、 f(261, 549));
}

function testWithMinus() {
    assertEquals("f(-10, 55) == 5", 5、 f(-10, 55));
    assertEquals("f(-10, 60) == 10", 10、 f(-10, 60));
}
//--></script>
  </body>
</html>

テストはhtmlファイルで、中にjavascriptで書きます。app/jsUnitCore.jsを読みこんで、それから実行してほしいテスト関数をtest*という名前で定義すれば十分です。

テストの実行はtestRunner.htmlからブラウザ上で行います。こんな(本家のscreenshot)画面が開きます。見たまんま、作ったテストhtmlファイルを指定してRunを押してすと、JSUnitが自動的にtest*という関数を探して全て実行してくれます。テスト結果は下のほうに出ます。テストが失敗するとどこで失敗したかも出ます。ちなみに上のコードは一つ失敗するはずです。

本家のDocumentationが理解できなくて苦労しました。やるべきことは全て書いているのに何故でしょう。あとでexamplesを見つけてやっと使いかたがわかり、サンプルを一つ書いたらあとはDocumentationも理解できるようになりましたが。

追記@Mar. 23, 2008 19:10 PDT:assertEqualsの最後の引数の順序を入れ換え。なってほしい値、実際の式の順番が正解でした。

スポンサーサイト
コメント
この記事へのコメント
コメントを投稿する
URL:
Comment:
Pass:
秘密: 管理者にだけ表示を許可する
 
トラックバック
この記事のトラックバックURL
http://gusmachine.blog49.fc2.com/tb.php/320-2e731e1a
この記事にトラックバックする(FC2ブログユーザー)
この記事へのトラックバック
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。