ScalaでJUnitテストケースを書く

とりあえず、Scala用のテストフレームワークは使わず、素のJUnitを使った例。

Eclipseから使う場合、JUnit関連クラスのimportはクラススコープの外側に書いておかないと、右クリックからテスト実行できないようです。

あと、Scala2.8からアノテーションのパラメータの書き方が変わったようで、Javaと同じような記述ができるようになりました。(2.8で、前と同じ書き方をするとコンパイルエラーになります)

import org.junit.{ Test, After, Before }
import org.junit.Assert._


class SampleTest {

    @Before
    def befor = {
        // 前処理
    }

    @Test(timeout=500)
    //@Test{val timeout=500}  //Scala2.7以前ではこう書く
    def testHoge = {
    	Thread.sleep(300)
        assertEquals(1, 1)
    }

    @After
    def after = {
        // 後処理
    }

}

Scalaの文字列処理とかパターンマッチングの便利さを考えると、JavaのテストケースもScalaで書いたほうが楽かもしれない。

(2010/09/14追記) 例外のテスト

例外の発生をテストする場合、Javaでは@Testアノテーションに下のように書いていた。

@Test(expected=IllegalArgumentException.class)

Scalaの場合は以下のようになる。

@Test(expected=classOf[IllegalArgumentException])