Symfoware

Symfowareについての考察blog

JUnit 4.10 + Eclipseの使い方

今更ですが、JUnit 4の使い方を調べた結果をメモしておきます。
Eclipse Pluginでの使用を前提にしています。






JUnit 4.10のダウンロード



私の環境では、EclipseのJUnit Pluginに同梱されているバージョンが
若干古い(4.8)でしたので、最新バージョンの4.10をダウンロードします。


http://www.junit.org/
ここのDownload JUnitを選択。

githubのダウンロードベージが表示されます。
https://github.com/KentBeck/junit/downloads

ここからjunit-4.10.jarをダウンロードしました。






Eclipseでテストケースの作成



テストしたいクラスsample.Mainをsrc/main/javaに。
テストクラスsample.MainTestを/src/test/javaに保存する構成にしました。
※確か、Mavenのデフォルト構成がこうだったと思います。

また、libというフォルダを作成し、ダウンロードしたjunit-4.10.jarを
コピーしておきました。

97_001.png


右クリックし、[新規]-[JUnitテストケース]を選択します。

97_002.png


/src/test/javaにsample.MainTestを作成します。

97_003.png


「JUnit 4がビルド・パスにありません。追加しますか」と表示されるので、
「ビルド・パス・プロパティー・ページを開く」を選択します。
※プラグイン同梱のJUnitのバージョンでもよい場合は、「次のアクションを実行」で、
自動的にプラグインに同梱されているjarがビルドパスに追加されます。

97_004.png


Javaのビルドパスを追加する画面が表示されたら「ライブラリー」タブを選択。
「Jarの追加」ボタンをクリックし、コピーしておいたjunit-4.10.jarを追加します。

97_005.png


追加後はこんな表示になるはずです。

97_006.png


ウィザードが終了すると、MainTestのひな形が出来上がっています。

97_007.png








JUnitテストの実行



とりあえず実行してみます。
ウィザードで作成されたMainTestを右クリック。
[実行]-[JUnitテスト]を選択します。

97_008.png



JUnitの画面が表示され、テストが実行されます。
ひな形からは失敗するケースがサンプルとして出力されているので、
ここでのテストは必ず失敗します。

97_009.png









サンプルとして、テスト対象のクラス「Main」にこんな処理を記載しました。


  1. package sample;
  2. public class Main {
  3.     //テストしたいメソッド
  4.     public String getTitle() {
  5.         return "Symfoware";
  6.     }
  7. }




getTitle()を呼び出すと決まった文字列を返却します。
この返却される文字列が正しいかのテストを書いてみます。



MainTestはこうなりました。


  1. package sample;
  2. import static org.junit.Assert.*;
  3. //is()として使えるよう、staticにimport
  4. import static org.hamcrest.core.Is.is;
  5. import org.junit.Test;
  6. public class MainTest {
  7.     //テスト用に作成したメソッドには、「@Test」をつける
  8.     @Test
  9.     public void test() {
  10.         Main actual = new Main();
  11.         assertThat(actual.getTitle(), is("Symfoware"));
  12.     }
  13. }




JUnit 3系の時は、assertEquals(比較対象,予想値)みたいなメソッドを使用していましたが、
JUnit 4系からは、全てassertThat()に統一されたようです。


assertThat(比較対象, is(予想値))




このis()を使用するために、

import static org.hamcrest.core.Is.is


を追加しています。

ちなみに、比較のためのis()はmatcherと呼ぶようです。




再度テストを実行してみると、こんな感じで成功と表示されます。

97_010.png








使用できるマッチャー



assertThatで使用する、比較条件(マッチャー)の種類を調べてみます。
長くなるので別記事で。

JUnit 4.10の標準で使用できる比較構文(マッチャー)
・等価であるか:is()
・等価でないか:not()
・nullであるか:nullValue()
・nullでないか:notNullValue()
・指定したインスタンスか:instanceOf()
・同じインスタンスか:sameInstance()
・全ての条件を満たすか:allOf()
・いずれかの条件を満たすか:anyOf()
・値は何でもよい:anything()
・トレースに表示する文字列を変更:describedAs()




使用できるアノテーション



JUnit 4.10で使用できるアノテーション(org.junitパッケージ)
・テストメソッド指定:@Test
・テスト除外指定:@Ignore
・テストメソッドごとに事前実行:@Before
・テストを通して、一回だけ事前実行:@BeforeClass
・テストメソッドごとに事後実行:@After
・テストを通して、一回だけ事後実行:@AfterClass
・テスト時の一時的なルールの作成:@Rule
・複数のテストを通じてのルール設定:@ClassRule




【参考URL】


JUnit.org
http://www.junit.org/

JUnit FAQ
http://junit.sourceforge.net/doc/faq/faq.htm
関連記事

テーマ:プログラミング - ジャンル:コンピュータ

  1. 2012/07/15(日) 13:34:37|
  2. Java
  3. | トラックバック:0
  4. | コメント:0
  5. | 編集
<<JUnit 4.10の標準で使用できる比較構文(マッチャー) | ホーム | Eclipse 3.7.2でソフトウェア更新を行うとorg.eclipse.ui.PartInitException>>

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://symfoware.blog68.fc2.com/tb.php/990-32bb188f
この記事にトラックバックする(FC2ブログユーザー)