JUnit

JUnit 入門・基本的な使い方

JUnitは、Javaで開発されたプログラムのふるまいを
検証する為のフレームワーク、
関連するツール群の総称になります。

ユニットテストとは、コードの一部(ユニット)の
ふるまいを検証するためのテストを意味します。

ユニットのサイズは決まっていません。
ユニットを「システムの中で何らかの
有益なふるまいを行う小さなコード」であると定義します。

SPONSORED LINK

ユニットテストを作成するタイミングや、その理念とは?

JUnitの目的とする理念

  • 何らかの機能のコーディングが完了し、期待通りにふるまうかどうかを確認したい場合
  • コードへの変更内容を記録し、自分や他の開発者が変更の意図を理解できるようにしたい場合
  • システムのふるまいについて理解したい場合
  • 他者によるコードが期待通りに機能しなくなった際に、それがいつからなのか知りたい場合

最も重要なことは、
良いユニットテストを行えば自信を持って
実運用向けのシステムを
リリースできるという点です。

いわゆる単体テストが完璧であれば、
その後の結合テストによる
バグの可能性も低いと考えられる為、
JUnitテストは大きな開発プロジェクトで
あればあるほど重宝されています。

JUnit4のアノテーション・テストケースのメソッド

JUnit4で使用される基本的なアノテーション

SPONSORED LINK

JUnit4で使用される基本的なAssertクラス

Eclipseからテストクラスを作成するとJunit.Assertクラスがインポートされます。

どのようなテスト観点かによって使用するメソッドが違ってきます。
上記に記載してあるメソッドを覚えておけばまず困ることはないでしょう。
ちなみにJUnitで使用頻度が高いメソッドがassertEquals()です。

SPONSORED LINK

JUnit4の基本的な使い方

ここでは、とても簡潔な方法で説明していきます。
まずテストを行いたいソースがあるフォルダーとは、
別にテスト用のフォルダーを作成します。

今回はtestを作成しました。
srcにはテストを行いたいCarクラスがあります。

1.テストを行いたいクラスで右クリック。[新規]>[その他]をクリック。

2.JUnitテスト・ケースを選択し、[次へ]をクリック。

3.[参照]をクリックし、フォルダーはtestを選択。テスト元クラスを確認後、[完了]をクリック。

4.testフォルダー内にCarTestクラスが作成されます。

上記の方法だとテストクラスのメソッドには自動的に@Testがつく状態になります。



SPONSORED LINK

JUnit4の簡単なテストを実装

では実際にCarTestクラス作成して解説していきます。
まずCarクラスにある各メソッドをテストする必要があるので、
ここではoiling()とdistance()が該当します。

テスト実行結果

assertEqualsメソッドの場合
ユーザの設定した期待値と実際の値が
イコールであればソースコードの整合性が
取れていると判断できます。
それはテストに成功したことを表しています。

違う場合はテストに失敗し
ソースコードの整合性が取れていないことになります。

oilingTest01()に記載してあるassertEquals()の解説

distanceTest01()に記載してあるassertThat()の解説

またassertThat()を使用することで、
期待しない値との検証することも可能になります。

改行

SPONSORED LINK

JUnit4で使用される基本的なassertThatメソッド

Assertクラスのメソッドの1つになり
hamcrest.CoreMatchersクラスをインポートすると使用が可能になります。

テストでバグを引き起こす境界条件


ユニットテストを使って発見されるバグのほとんどが境界条件に関連しています。
逆に言えば境界条件の観点で試験項目を作成することができれば、
良いユニットテストを行ったと言えるでしょう。

CORRECTに従って、テスト対象のメソッドの中に
同等の条件が発生するか考慮し、再現性のあるテストにしてください。

  • Conformance(適合)
  • 期待値の形式に適合しているか

  • Ordering(順序)
  • 期待値の集合は適切な順序に並び替えられているか

  • Range(範囲)
  • 期待値は最小値と最大値の範囲内にあるか、閾値は妥当か

  • Reference(参照)
  • 自身が直接コントロールできない外部のコードを参照していないか

  • Exisstence(存在)
  • 期待値はnull、ゼロ、空(ブランク)でないか

  • Cardinality(要素数)
  • 期待値は十分な個数を満たしているか

  • Time(時間)
  • 適切なタイミングや一定順序で発生し、処理結果となる期待値は想定される時間内に完了するか

SPONSORED LINK

郵便番号・住所検索用開発ツール「Yubin7 for Java」前のページ

Java オブジェクト指向とは?初心者向けにわかりやすい概要!!次のページ

ピックアップ記事

  1. Java入門 JavaプラットフォームやJava言語の仕組み
  2. Java 9が正式リリース
  3. Java クラスのインスタンス化・初期化とは?

コメント

  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

Recommended Article

Pickup

  1. 文字列

    Java yyyyMMddからyyyy/MM/ddへ変換して日付判定する方法
  2. Class・Object

    Java ファイルやディレクトリの存在チェック(exists)とパターンを解説
  3. 制御文

    Java switch文の使い方とdefaultとbreakの役割と関係性を解説…
  4. Struts

    Strutsの概要
  5. Eclipse

    Java インストールしたJREとEclipseを連動させる(設定)手順を解説!…
PAGE TOP

Copyrighted Image