2011年9月24日土曜日

・ Junitとお自動さん?

ネットで面白そうなツールが転がってたので
使ってみることに。
それが何かと言いますと、「おじどうくん(http://park.ruru.ne.jp/ando/work/autoUt/index_ja.html)」
単体テスト項目の自動生成ツールらしいです。
落としてみるとperlで書かれてました。
でもperlなんか使ったことないから、とりあえず使い方がわからない!!

と思ってはいたけど、まずはPerlをインストール。
http://www.activestate.com/downloads

インストールが完了したら、コマンドプロンプトで
『perl -v』って打ったらなんかでます。
















インストールができたら、動くかどうかをテストするために
対象となるプログラムを作りました。
SuperHelloWorld!
数を入力するとHelloWorldがその数だけくっついて出力されるというもの。


HelloWorld.java


package hoge;

public class HelloWorld {

    public String getSuperHelloWorld(int times) {

        String word = "HelloWorld ";
        StringBuffer resultWord = new StringBuffer();

        for(int i = 0; i < times; i++) {

            resultWord.append(word);
        }

        return resultWord.toString();
    }
}


んで、コマンドプロンプトから落としてきたファイルを実行してみる。

『perl ut4.pl HelloWorkd.java』
じゃあ、cannot get active execel! 
と言うエラーが。
じゃあExcel出したるやんけー、って思ってExcelを起動した状態でやったら















こんなんできました!
まぁ、この程度のプログラムなら十分でしょう。
網羅率を見るには条件文の中に入るかどうかを見るだけで十分ですもんね。

じゃあ、次はテストをしてみよう。
今回利用することにしたのはEclipseに入ってるJUnit。
単体試験ツールです。

対象となるプログラムを右クリックして、新規のJUnitテストケースを選択。
んでこんな感じ。
































じゃあこんなんができたはず。


package hoge;

import org.junit.Test;

import junit.framework.TestCase;

public class HelloWorldTest extends TestCase {

    @Test
    public void testGetSupereHlloWorkd() {
        fail("まだ実装されていません");
    }
}

ここのTestをオーバーライドしてるメソッドにテストケースを追加します。
与える値と、その期待値です。
今回は5を与えて、HelloWorldが5回出力されるのを期待値とします。

package hoge;


import org.junit.Test;

import junit.framework.TestCase;

public class HelloWorldTest extends TestCase {

    @Test
    public void testGetSupereHlloWorkd() {

        HelloWorld hello = new HelloWorld();
        int arg1 = 5;
        String result = "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld ";
        String wrongResult = "Hello!!!!";

        assertEquals(result, hello.getSuperHelloWorld(arg1));
        assertEquals(wrongResult, hello.getSuperHelloWorld(arg1));
    }
}

こんな感じ。
assertEquals()は見ての通り、期待値と結果の比較です。
今回はわざと誤った解答がでるのも作りました。

実行したらこんな感じ。




















左側に失敗があればちゃんと出てくれます。
画像ミスったな。
一応行数とか出てくれてて、19行目がおかしいって言ってくれます。


と言うテストツール。


この比較メソッドは他に


assertTrue()

assertFalse()

assertNotNull()

assertNull()

assertSame(Object1, Object2)

assertNotSame(Object1, Object2)

assertNotSame(String, Object1, Object2)

fail(String)

なんかがあるみたいです。
以上!

1 件のコメント: