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());
}

アノテーション

JUnitは次のアノテーションをサポートしている。

アノテーション 説明
@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) テストのタイムアウト時間を宣言する。
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クラスのメソッド
メソッド 説明
assertEquals 期待値と実行結果が等しい場合、テスト成功
assertArrayEquals 期待値と実行結果が等しい場合、テスト成功
assertThat 実行結果が指定した条件を満たせば、テストが成功
assertNotNull オブジェクトがnull以外の場合、テスト成功
assertNull オブジェクトがnullの場合、テスト成功
assertSame オブジェクトが同一の場合、テスト成功
assertNotSame オブジェクトが不一致の場合、テスト成功
static void assertTrue(boolean cond ) condがtrueの場合、テスト成功
static void assertFalse(boolean cond ) condがfalseの場合、テスト成功
static void fail() 常にテスト失敗

assertEquals

期待値(expected)と実行結果(actual)が等しい場合、テストが成功する。

static void assertEquals(double expected, double actual)
static void assertEquals(long expected, long actual)
static void assertEquals(java.lang.Object expected, java.lang.Object actual)

assertArrayEquals

期待値(expected)と実行結果(actual)が等しい場合、テストが成功する。

static void assertArrayEquals(byte[] expected, byte[] actual)
static void assertArrayEquals(char[] expected, char[] actual)
static void assertArrayEquals(int[] expected, int[] actual)
static void assertArrayEquals(long[] expected, long[] actual)
static void assertArrayEquals(java.lang.Object[] expected, java.lang.Object[] actual)
static void assertArrayEquals(short[] expected, short[] actual)

assertThat

実行結果(actual)が指定した条件(matcher)を満たせば、テストが成功する。

static void assertThat(T actual, org.hamcrest.Matcher<T> matcher)

assertNotNull

オブジェクトがnull以外の場合、テストが成功する。

static void assertNotNull(Object obj)

assertNull

オブジェクトがnullの場合、テストが成功する。

static void assertNull(Object obj)

assertSame

オブジェクトが同一の場合、テストが成功する。

static void assertSame(Object expected, Object actual)

assertNotSame

オブジェクトが不一致の場合、テストが成功する。

<
static void assertNotSame(Object expected, Object actual)

org.hamcrest.Matchersクラス

org.hamcrest.Matchersクラスのメソッド
メソッド 説明
static < T > org.hamcrest.Matcher< T > is( T value ) valueと一致すれば真を返す。
SEO [PR] 爆速!無料ブログ 無料ホームページ開設 無料ライブ放送