[[技術情報]] > [[Java>]] > JUnit4
[[技術情報]] > [[Java>http://www.trance.co.jp/wiki/index.php?%B5%BB%BD%D1%BE%F0%CA%F3#xe479566]] > JUnit4

* JUnit4 [#c858077d]

#contents


** JUnitとは? [#na72a417]
Java用の単体テストフレームワーク。

JUnitのようなテスティングフレームワークを活用することで、次のメリットがある。
+ テストを統一な方法で作成できる
→ 他人が見ても分かりやすい
+ テストが簡単にできる

また、単体テストコードがあれば、仕様変更時のデグレードを早い段階で発見することができる。


** JUnit4の特徴は? [#s7d096f9]
J2SE5.0のアノテーションを取り入れ、テスト記述方法のルールがシンプルになった。

** JUnit3との違いは? [#ideba8e3]
-「junit.framework.TestCase」クラスを継承しなくてもよい。
- テストメソッドのプレフィックスに「test」の必要がない。
- テストクラス前後に行う処理を指定できるようになった。(@BeforeClass、@AfterClass)
- 例外検証のソースの記述が簡単になった。(@Test(expected=XXXXException.class))
- パフォーマンスの検証もできるようになった。(@Test(timeout=1500))
- テストを無視することができるようになった。(@Ignore("実行しない理由を書く"))

** 記述方法の違いは? [#v86aab5d]
*** テストクラス [#j0cb2422]
- JUnit3
 import junit.framework.TestCase;
 
 public class SampleTest extends TestCase {
 
 }


- JUnit4
「junit.framework.TestCase」を継承しないくてもよい。
 import static org.junit.Assert.*;
 
 public class SampleTest {
 
 }


*** 通常テストメソッド [#y0103bba]
- JUnit3
 public void testFoo() {
 
 }


- JUnit4
テストメソッド名のプレフィックスに「test」が要らない。
 @Test
 public void foo() {
 
 }


*** 例外検証テストメソッド [#c73bca93]
- JUnit3
 public void testException() {
   String string = null;
   try {
     fail();
   } catch (NullPointerException e) {
     assertTrue(true);
   }
 }


- JUnit4
「@Test」の「expected」要素に期待する例外クラスを名を記述する。
 @Test(expected=NullPointerException.class)
 public void exception() {
   String string = null;
   string。toUpperCase();
 }


*** テストメソッドの前処理 [#v08a0341]
- JUnit3
 public void setUp() {
   // 前処理
 }

- JUnit4
メソッド名は任意
 @Before
 public void before() {
   // 前処理
 }


*** テストメソッドの後処理 [#q4949f72]
- JUnit3
 public void tearDown() {
   // 後処理
 }

- JUnit4
メソッド名は任意
 @After
 public void after() {
   // 後処理
 }

** 新しい機能は? [#k8ab9b07]
*** パフォーマンス検証テストメソッド [#d66b67ab]
 // 1500ms以下であること。
 @Test(timeout=1500)
 public void time() throws InterruptedException {
   Thread。sleep(1000);
 }

*** テストを無視する [#f69b853b]
 @Ignore("実行しない理由を書く")
 @Test
 public void foo() {
   String string = "無視する";
   assertEquals("無視する", string);
 }

*** オブジェクト型配列の検証 [#p6079452]
 assertEquals(Object[], Object[]);


*** テストクラスの前処理 [#d5e063f3]
 @BeforeClass
 public void beforClass() {
   // 前処理
 }


*** テストクラスの後処理 [#n8ff9cee]
 @AfterClass
 public void afterClass() {
   // 後処理
 }

** 実行順序 [#xe1e2407]
- ソース
 public class SampleTest2 {
	static {
		System.out.println("クラス初期化");
	}
 
	public SampleTest2() {
		System.out.println("コンストラクタ");
	}
 
	@BeforeClass
	public static void setUpBeforeClass() throws Exception {
		System.out.println("@BeforeClass");
	}
 
	@AfterClass
	public static void tearDownAfterClass() throws Exception {
		System.out.println("@AfterClass");
	}
 
	@Before
	public void setUp() throws Exception {
		System.out.println("@Before");
	}
 
	@After
	public void tearDown() throws Exception {
		System.out.println("@After");
	}
 	
	@Test
	public void test() {
		System.out.println("テストメソッド");
	}
 }

- 結果
 クラス初期化
 @BeforeClass
 コンストラクタ
 @Before
 テストメソッド
 @After
 @AfterClass


** アノテーション一覧 [#la873a28]
LEFT:
|~アノテーション|~意味|
|@Test|テスト対象のメソッドに記述する。&br;exception:例外テストの際、例外クラス名を記述する。&br;timeout:パフォーマンス検証テストの際、実行時間をミリ秒で記述する。|
|@Before|テストメソッドの前処理のメソッドに記述する。|
|@After|テストメソッドの後処理のメソッドに記述する。|
|@BeforeClass|テストクラスの前処理のメソッドに記述する。|
|@AfterClass|テストクラスの後処理のメソッドに記述する。|
|@Ignore|テスト対象外にするメソッドに記述する(テストを実行しない場合に記述する)。|

** Eclipse関連 [#rdb6bfcd]

*** サポートしているEclipseのバージョンは? [#zc793c64]
Eclipse3.2〜

*** EclipseでJUnit4を使用するには? [#ha2b7972]
+ [File] -> [New] -> [JUnit Test Case]を選択する。
+ 一番上のラジオボタンで「New JUnit 4 test」を指定する。

*** 便利なプラグイン [#e725177f]
- Quick JUnit Plugin for Eclipse
&color(red){※注意};
2007/04/19 
JUnitテスト起動ショートカットキー[Ctrl + 0]を実行しても、「JUnit テストケースを選択してください。」のメッセージが表示されてしまい、実行されない。
- djunit


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS