2011年10月27日木曜日

JUnit触ってみた

今度会社の研修でJavaで開発するということで、
JUnitとか使うのかなとか思いつつ、
ちょっと触ってみました。

JUnitは普通に
http://www.junit.org/
からjunit-4.9.jarが最新だったのでそれを落としてきました。

それを以下のlib内にコピー

プロジェクト名
┣src
┗lib
  ┗junit-4.9.jar
(ProjectName\lib\junit-4.9.jar)


junit-4.9.jarを右クリック
ビルド・パスに追加
参照ライブラリーに追加されていればOK.

追加してもなんだか反映されないぞっ
ってときはF5とかで更新してください。

あとは、適当にテストコードを書けばOKです。

ためしに書いた雰囲気をつかむ用。
(特にテストしたいソースがなかったので
内容は超適当)

package hello;

import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import static org.hamcrest.CoreMatchers.*;
import static org.junit.Assert.*;

public class HelloWorldTest {
   
    @Before
    public void before(){
        System.out.println("テストが呼ばれる前に実行される。");
        System.out.println("■開始");
    }
   
    @After
    public void after(){
        System.out.println("テストが呼ばれた後に実行される。");
        System.out.println("■終了");
    }
   
    @Test
    public void testNormal(){
        String[] actual = { "Hello", "World", "!!" };
        assertThat(actual,is(actual));
    }
   
    @Test
    public void testFailed(){
        fail();
    }
}
 久しぶりにEclipseを使ったせいか、ショートカットキーの忘れが激しくて少し書きづらかった…
少しめも…
Ctrl+Shift+M: import補完(なんか選択している単語についてだけだったのは気のせい?
  Alt +Shift+T: JUnitテストを実行

実行結果はこんな感じ。


@Beforeと@Afterは
casesetupとteardown。
1つ1つのテストが実行される前に実行される
初期化メソッドと、後始末メソッドです。

テスト開始時と終了時に1回だけ実行したい場合には、
@BeforeClassと@AfterClassアノテーションを使えばOK。

@Ignoreを使うと、テストメソッドと認識されない。

@Test(expected=NumberFormatException.class)
とか書くと、NumberFormatExceptionがthrowされることを
期待するテストメソッドとなる。



あと、他に
EclEmmaというのも入れました。
これは、実行されたコードを色付きであらわしてくれます。
そして、どの何%実行されているとかもみれるので、
すべてのコードの組み合わせを網羅しているかのチェックにもなります。
(だからといって、仕様を全て満たしたという意味ではない。
あくまでコードは全て通ったかどうかのチェック)

これは、Eclipseのメニューの
[ヘルプ]
⇒[新規ソフトウェアのインストール]
⇒ロケーションに、http://update.eclemma.org/と入力
⇒EclEmmaを選択
⇒次へ、とかを選択してインストールをする。
⇒再起動

実行するとこんな感じです。
緑が実行されたコード
赤は実行されなかったコード


それにしても、このブログ使いづらいかもw

画像を簡単に追加はできるんだが、
追加されるところが少しずれて、
自分で修正が結構必要。カーソルのところに
追加されるんじゃないの?

まぁいいや。

Cのテストよりも色々できそうな雰囲気を感じ取りました。
Javaの他のテストフレームワークは使えるほど
いい感じのがたくさんあるのかな。


EMMAとStrutsアプリでカバレッジ取得ができるみたいなので
テストするときにはこれは役にたってくれるのかな。

そしたらStrutsを使うことになってしまうけれど。

目的別、フレームワークの長所短所をもっと知る必要が
ありますね。

眠い。
ショーシャンクの空に
という映画をやっと見る機会ができたので、
見ようと思っていたはずなのに
JUnitに負けた!!

早く名作みたい。
それではまた次回。






0 件のコメント:

コメントを投稿