いまさらだけどjsUnitやってみた


ちなみに*Unit系はjava用とかPHP用とかを大昔にちょっと試した程度。
テスト駆動開発とか全然経験なし。


とりあえず本家サイトいってjsUnit2.2をダウンロード。
ZIPを解凍してWeb公開領域に設置。


テスト対象は、文字列を連結するクラスでも作ってみることにした。
javaのStringBuilderみたいなの。
インスタンス作ったら、どんどん追加して、文字列化ーみたいな感じ。


で、とりあえずテストケースを書く。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type="text/javascript" src="/jsunit/app/jsUnitCore.js"></script>
<script type="text/javascript" src="/js/StringBuilder.js"></script>
<script type="text/javascript">
function test_Add() {
    try {
        var sb = new StringBuilder();
        sb.add('aaa');
    }
    catch(ex) {
        fail('add method test failed');
    }
}
function test_toString() {
    var sb = new StringBuilder();
    sb.add('aaa');
    sb.add('bbb');
    sb.add('ccc');
    assertEquals(sb.toString(), 'aaabbbccc');
}
</script>
<title>StringBuilder Test</title>
</head>
<body>
</body>
</html>

これをStringBulder_test.htmlとして保存。


テストランナー(http://localhost/jsunit/testRunner.html)をブラウザで開いて、
URL欄にテストケースのURL(localhost/test/StringBuilder_test.html)を入力。
RUNボタンおしてみる。エラーになる。真っ赤なライン。


肝心のJavascriptのほうを作る。

function StringBuilder() {
    this.init.apply(this, arguments);
}
StringBuilder.prototype = {
    init : function() {
        this._seq = [];
    },
    add : function(s) {
        this._seq[this._seq.length] = s;
    },
    toString : function() {
        return this._seq.join('');
    }
};

StringBuilder.jsとして保存。


で、もう一度テストランナーを実行する。今度は成功。緑のライン。


やりかた的にはこんなんであってるのかな。
テストケースが充分なのかの判断がまだよくわかんない。