概要
JUnitの基本操作について学習した際の備忘録です。
JUnitによるテストのメリット
- テストに要する工数の削減。テストケースが体系化されており、一度作成したテストケースは何度も利用可能であるため
- 使用やソースプログラムの機能が明確になる
- コード変更による退行を防ぎ、リファクタリングを促進させる
網羅条件
- 命令網羅(statement coverage)(C0)
全ての命令を少なくとも1回は実行するテストを行う - 分岐網羅(branch coverage)(C1)
分岐のパスを全て少なくとも1回は通るテストを行う - 条件網羅(condition coverage)(C2)
分岐の際の判定条件が複数ある場合に、それぞれの条件が真あるいは偽になる場合を少なくとも1回は含むテストを行う
JUnitの設定と基本操作
Eclipseを使用する場合の設定と基本操作です。バージョンはEclipse(pleiades all in one)2023です。
テストケースの作成
- テスト対象クラスを右クリック
- 新規>その他>Java>JUnit>JUnitテスト・ケースと選択し、次へをクリック
- 新規JUnit Jupiterテストを選択する。クラス名は、デフォルトで「テスト元クラス+Test」という名前になっている。基本的にそのままで良い。次へをクリックする
- テストするメソッドを選択してチェックをつけ、完了をクリックする
- テストケースとなるクラスを持つファイルが生成される
Assertions クラスの主なメソッド
JUnit5 の Assertions クラスに搭載されているメソッドを用いてテストを行う。ちなみに、assertion とは「表明」「断言」などを意味し、ある式や値が想定したものになっているか否かを確認するものである。
-
assertArrayEquals(arrays expected, arrays actual)
配列同士を比較し、等しければ true を返す -
assertEquals(expected, actual)
値を比較し、等しければ true を返す -
assertSame(expected, actual)
expected と actual が同じオブジェクトの場合は true を返す -
assertNotSame(expected, actual)
expected と actual が異なるオブジェクトの場合は true を返す -
assertNull(obj)
オブジェクトが Null であることを確認し、Null の場合に true を返す -
assertNotNull(obj)
オブジェクトが Null 出ないことを確認し、Null でない場合に true を返す -
assertTrue(boolean condition)
条件が true であることを確認し、true の場合は true を返す -
assertFalse(boolean condition)
条件が false であることを確認し、false の場合は true を返す
assertEqualsメソッドを利用したテストの実行例
テストケースのクラス内のメソッドにおいて、次のように記述する。
例
import static org.junit.jupiter.api.Assertions.*;
import org.junit.jupiter.api.Test;
class TaxTest {
// テストメソッドには、@Testアノテーションを付与する。
@Test
void testTaxIn() {
Tax tax = new Tax(); // テスト対象クラスのインスタンス化
assertEquals(1100, tax.taxIn(1000)); // taxIn()は、消費税(10%)込みの数値を返すメソッド。
}
}
テストの実行は、テストケースクラスを右クリックして、実行>JUnitテストをクリックする。
JUnitビューに緑色の帯が表示されればテスト成功。
赤色の帯が表示されればテスト失敗。障害トレースに失敗のクラスやメソッドの該当行などが表示され、この箇所をダブルクリックすれば、エディター上の該当行へジャンプできる。
代表的なアノテーション
アノテーション | 概要 |
---|---|
@Test | テストメソッド |
@BeforeEach | それぞれのテストメソッド実行の前に行われる処理 |
@AfterEach | それぞれのメソッド実行の後に行われる処理 |
@BeforeAll | テストクラスのテスト実行前に1度だけ行われる処理 |
@AfterAll | テストクラスのテスト実行後に1度だけ行われる処理 |
条件分岐のテスト(カバレッジ)
- カバレッジを利用できるように、まずはEclEmmaを導入する。eclipseで、ヘルプ>Eclipseマーケットプレースを選択
- 検索欄にEclEmmaと入力し、検索してインストールする
- テストケースクラスを右クリックし、カバレッジ>JUnitテストを選択
- カバレッジビューにカバレッジが表示される。なお、ソースコードに付いた色については、緑色がテストした処理、赤色はテストしていない処理、黄色は条件部分であり、黄色の行番号の左側のマークにマウスを合わせると、テストしていない分岐の数が表示される
関連リンク
参考文献