【JUnit】 JUnit ~ アノテーション編 ~

■ 基本

`アノテーション`説明備考
@Testテストメソッドを表す

@Test

 * JUnit は、このアノテーションがついたメソッドをテストメソッドとみなしてくれる
 * メソッド名は任意

@Test
public void testGetGifWidth() {
	int result = 0;
	try {
		result = obj.getGifWidth("C:\\test.gif");
	} catch (Exception e) {
		fail("Failed...");
		return;
	}
	System.out.println("SUCCESSFUL! : " + result);
}

@Test(expected=[例外クラス])

 * どんな例外がスローされるのを期待するかを、@Test アノテーションの expected 属性を使って記述する
 * 例外に関するテストで使用する
 * 例外に関する試験については、以下の関連記事を参照
https://blogs.yahoo.co.jp/dk521123/6884475.html


@Test(expected=TestException.class)
public void testThrowTestException() throws Exception {
    throwTestException(null);
}

@Test(timeout[=[タイムアウト時間(ミリ秒)])

 * 指定された時間内にテストが終了しなければ失敗
 * パフォーマンス試験などに使える
 * タイムアウト時間には、テスト環境の作成と検証も含まることに注意
 * Thread.sleep() で停止中にタイムアウトが発生しても、タイムアウト発生とみなされないことにも注意

■ テスト実行前後

`アノテーション`説明備考
@Beforeテスト前処理/メソッド実行前に都度実行される
@BeforeClassテストメ前処理/テストクラス実行前に一度だけ実行される
@Afterテスト後処理/メソッド実行後に都度実行される
@BeforeClassテストメ後処理/テストクラス実行後に一度だけ実行される

@BeforeClass / @AfterClass

 * 各テストクラスの実行前/実行後に一度だけ呼び出すことを示すアノテーション
 * メソッド名は任意
 * static にする必要がある(外すと実行時に例外がでる)

static testTool obj;

@BeforeClass
public static void beforeClass() throws Exception {
    obj = new testTool();
}

@Before / @After

 * 各テストメソッドの前後に、都度実行することを示すアノテーション
 * メソッド名は任意
 * static にする必要がある(外すと実行時に例外がでる)

static testTool obj;

@Before
public static void before() throws Exception {
    obj = new testTool();
}

■ テストの一括実行関連

`アノテーション`説明備考
@RunWithテストの一括実行の際等で使用@RunWith(Suite.class)
@SuiteClasses一括でテストケースを実行する@SuiteClasses( { [テストクラス].class })

参考文献

* @RunWith
http://d.hatena.ne.jp/absj31/20120814/1344914721
http://d.hatena.ne.jp/penult/20120114/1326559700
http://www7b.biglobe.ne.jp/~archer/tryjunit4/tryjunit4.html
http://tomoyamkung.net/2013/08/28/java-junit4-enclosed/
http://www.trance.co.jp/wiki/index.php?JUnit4
* @SuiteClasses
http://d.hatena.ne.jp/absj31/20120813/1344869516

■ その他


`アノテーション`説明備考
@Ignoreテストを無視する@Ignore("実行しない理由" )
@FixMethodOrderテストの実行順序を制御@FixMethodOrder(MethodSorters.NAME_ASCENDING)

@Ignore

 * テストメソッドを無効にするアノテーション
 * メンテナンスが必要ない時や一時的にテストしない時などに使える
 * オプションでコメントを付加できる

@Ignore("This test is ignored")
@Test
public void testGetInstance() {
	try {
		obj.getInstance(null);
	} catch (Exception e) {
		e.printStackTrace();
		fail("Failed...");
		return;
	}
	System.out.println("SUCCESSFUL!");
}

参考文献

* @FixMethodOrder
http://futurismo.biz/archives/2808
http://nanasiblog.blogspot.jp/2013/01/junit411.html
http://blog.fieldnotes.jp/entry/20121209/1355056720