JUnit とはJavaで開発されたプログラムにおいてユニットテスト(単体テスト)の自動化を行うためのフレームワークである。
http://junit.org/
テストプログラムの作成は以下のように行う。
org.junit.Assert
クラスをインポートする。import org.junit.Assert;
import org.junit.Test;
import org.junit.Before;
import org.junit.After;
@Test
アノテーションを付ける。
public void
にし、引数なしにする。@Test
public void testCase1() { ... }
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...] })
テスト結果判定用メソッドは、テストに失敗するとjava.lang.AssertionErrorをスローする。
メソッド | 説明 |
---|---|
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() |
常にテスト失敗 |
期待値(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)
期待値(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)
実行結果(actual)が指定した条件(matcher)を満たせば、テストが成功する。
static void assertThat(T actual, org.hamcrest.Matcher<T> matcher)
オブジェクトがnull以外の場合、テストが成功する。
static void assertNotNull(Object obj)
オブジェクトがnullの場合、テストが成功する。
static void assertNull(Object obj)
オブジェクトが同一の場合、テストが成功する。
static void assertSame(Object expected, Object actual)
オブジェクトが不一致の場合、テストが成功する。
static void assertNotSame(Object expected, Object actual)
メソッド | 説明 |
---|---|
static <
T
> org.hamcrest.Matcher<
T
> is(
T
value
)
|
valueと一致すれば真を返す。 |
JUnit (2016) Assert (JUnit API) JUnit 4.13.2 API