@Test でユニットテスト - 新生 JUnit 4.0 公開

    後藤大地  [2006/02/16]

    JUnit.orgは16日(米国時間)、JUnitの最新版であるJUnit 4.0を公開した。JUnitはJavaで開発されているテストフレームワーム。ユニットテストをおこなうためのフレームワークとして代表的存在。

    JUnit 4.0はCommon Public License Version 1.0のもとで公開されているオープンソースソフトウェア。Java開発におけるユニットテストフレームワームとしてはデファクトスタンダードの位置にあり、広く用いられている。

    JUnit 4.0ではアーキテクチャがかなり変更されている。これまでjunit.framework.TestCaseのサブクラスを使ってテストのタグつけをおこなう必要があったり、testという名称からメソッド名を開始することで試験メソッドを特定するとう命名規則に従う必要があったが、JUnit 4.0では@Testアノテーションを指定するだけで済むようになっている。

    なおJUnit 4.0は、タグつけとしてアノテーションを採用するようになったため、アノテーションをサポートしていないJava 1.5よりも前のバージョンでは動作しない。使用するにはJava 1.5以降の環境が必要。

    JUnit 4.0を使った場合のソースコードの記述例をリスト.1に示す。これまではクラスを継承したり、命名規則に従ってメソッドを用意する必要があったが、JUnit 4.0ではリスト.1のように@Testアノテーションや@Beforeアノテーションを指定するだけで済んでいる。

    リスト.1 JUnit 4.0を適用した場合のソースコード

    public class MoneyTest { 
        private Money f12CHF; 
        private Money f14CHF; 
        private Money f28USD; 
        
        @Before public void setUp() { 
            f12CHF= new Money(12, "CHF"); 
            f14CHF= new Money(14, "CHF"); 
            f28USD= new Money(28, "USD"); 
        }

        @Test public void simpleAdd() {
            Money m12CHF= new Money(12, "CHF"); 
            Money m14CHF= new Money(14, "CHF"); 
            Money expected= new Money(26, "CHF"); 
            Money result= m12CHF.add(m14CHF); 
            assertTrue(expected.equals(result));
        }
    }

    JUnitはJavaのユニットテストフレームワークとしては代表的な存在だったが、記述方法が煩雑であること、複雑な成果物になっていったことなどを懸念して、別のテストフレームワークを求める声もあった。JUnit以外のユニットテストフレームワークとして代表的なものにはTestNGがある。TestNGでは最初からタグつけにアノテーションを用い、簡潔な記述で多くの処理が済むように工夫されていた。

    JUnit 4.0になってTestNGと同様の機能が実現されたことになる。JUnit 4.0におけるアノテーションの記述方法はTestNGとも似ている。TestNGにはJUnit互換機能もあり、ある程度は相互に変換して使用することも可能。

    関連記事

    関連サイト

    新着記事

    特設サイトの情報

      人気記事

      一覧

        イチオシ記事

        新着記事

        特別企画

        マイナビニュースマガジン