JUnitとはJavaで開発されたプログラムにおいてユニットテスト(単体テスト)の自動化を行うためのフレームワークである。

JUnitのインストール

  1. WebブラウザでJUnitのWebサイトを開く。
    http://junit.org/
  2. 「Download and Install guide」リンクをクリックする。
  3. 「junit.jar」をクリックする。
  4. 必要なバージョンのjarをクリックする。
  5. ファイルのダウンロードが始まる。
  6. 同様に「hamcrest-core.jar」もダウンロードする。

テストプログラムの作成

テストプログラムの作成は以下のように行う。

JUnitを用いたテストプログラムの例を示す。

import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.JUnitCore;

public class SampleTest {

    @Test
    public void testCase1() {
        String expected = "success";
        String actual   = "success";
        // 期待値と結果が等しい場合はテスト成功
        Assert.assertEquals(expedted, actual);
    }

    @Test
    public void testCase2() {
        String expected = "success";
        String actual   = "failure";
        // 期待値と結果が異なる場合はテスト失敗(例外がスローされる)
        Assert.assertEquals(expedted, actual);
    }
}

テストプログラムの実行

テストプログラムの実行方法は、テストクラスを引数に指定してorg.junit.runner.JUnitCoreを実行する。

java org.junit.runner.JUnitCore testClass1 [testClass2...]

もしくは、テストクラスにmainメソッドを作成し、org.junit.runner.JUnitCore.mainメソッドを呼び出す。

public static void main(String[] args) {
    JUnitCore.main(SampleTest.class.getName());
}

アノテーション

アノテーション説明
@org.junit.Test テストメソッドを宣言する。
@org.junit.Before各テストメソッドの実行前に呼び出される。
@org.junit.After各テストメソッドの実行後に呼び出される。
@org.junit.BeforeClass各テストクラスの実行前に1度だけ呼び出される。
@BeforeClassアノテーションを付けるメソッドはstaticにする必要がある。
@org.junit.AfterClass各テストクラスの実行後に1度だけ呼び出される。
@AfterClassアノテーションを付けるメソッドはstaticにする必要がある。
@org.junit.Ignoreテストメソッドを一時的に無効にする。
@org.junit.Test(expected)スローされる予定の例外を宣言する。
@org.junit.Test(timeout)テストのタイムアウト時間を宣言する<。/td>
public class MyTest
{
    @org.junit.Test
    public void testCase1
    {
        // 処理
    }
}

import文を使えば、アノテーションを短縮形で記述することができる。

import org.junit.Test;

public class MyTest
{
    @Test
    public void testCase1
    {
        // 処理
    }
}

テストスイート

import org.junit.runner.RunWith;
import org.junit.runners.Suite;
import org.junit.runners.Suite.SuiteClass;

@RunWith(Suite.Class)
@SuiteClass({ クラス名.class [, クラス名.class...] })

org.junit.Assertクラス

テスト結果判定用メソッドは、テストに失敗するとjava.lang.AssertionErrorをスローする。

org.junit.Assertクラスのメソッド
メソッド 説明
static void assertEquals(double expected , double actual ) expected(期待値)とactual(実行結果)が等しい場合、テスト成功
static void assertEquals(long expected , long actual ) expected(期待値)とactual(実行結果)が等しい場合、テスト成功
static void assertEquals(java.lang.Object expected , java.lang.Object actual ) expected(期待値)とactual(実行結果)が等しい場合、テスト成功
static void assertArrayEquals(byte[] expected , byte[] actual ) expected(期待値)とactual(実行結果)が等しい場合、テスト成功
static void assertArrayEquals(char[] expected , char[] actual ) expected(期待値)とactual(実行結果)が等しい場合、テスト成功
static void assertArrayEquals(int[] expected , int[] actual ) expected(期待値)とactual(実行結果)が等しい場合、テスト成功
static void assertArrayEquals(long[] expected , long[] actual ) expected(期待値)とactual(実行結果)が等しい場合、テスト成功
static void assertArrayEquals(java.lang.Object[] expected , java.lang.Object[] actual ) expected(期待値)とactual(実行結果)が等しい場合、テスト成功
static void assertArrayEquals(short[] expected , short[] actual ) expected(期待値)とactual(実行結果)が等しい場合、テスト成功
static void assertThat( T actual , org.hamcrest.Matcher< T > matcher ) actualmatcherに指定された条件を満たせばテスト成功
static void assertNotNull(Object obj ) オブジェクトがnull以外の場合、テスト成功
static void assertNull(Object obj ) オブジェクトがnullの場合、テスト成功
static void assertSame(Object expected , Object actual ) オブジェクトが同一の場合、テスト成功
static void assertNotSame(Object expected , Object actual ) オブジェクトが不一致の場合、テスト成功
static void assertTrue(boolean cond ) condがtrueの場合、テスト成功
static void assertFalse(boolean cond ) condがfalseの場合、テスト成功
static void fail() 常にテスト失敗

org.hamcrest.Matchersクラス

org.hamcrest.Matchersクラスのメソッド
メソッド 説明
static < T > org.hamcrest.Matcher< T > is( T value ) valueと一致すれば真を返す。
スポンサーリンク