JUnit5について。

JUnit5について。


概要

JUnit5では、今までJUnit4で使われていた@TestアノテーションやassertEqualsメソッド等のパッケージが変わった。
テストや設定の記述方法も多少変更されている。
(従来のアノテーションやメソッドを使いつつ、テストの実行だけJUnit5のエンジンを使うということも出来る)

JUnit5はJava8以降が対象。
ただし、テスト対象クラス自体はJava8より前のJDKでコンパイルされたものでも可。


JUnit5は主に3つのサブプロジェクトに分かれた。

サブプロジェクト初期バージョン説明
JUnit Platform1.0.0IDEでテストを実行する為のランチャー。
JUnit Jupiter5.0.0JUnit5のテストケース記述・実行用。
JUnit Vintage4.12.0Junit3,4のテストケース実行用。

JUnit5でテストケースを記述する場合、JupiterのAPI(「org.junit.jupiter.api」パッケージ)を使用することになる。(パッケージ名に「jupiter」が入っている)

Vintageは旧来のJUnit3,4で書かれたテストをJUnit5のエンジンで実行する為のもの。
JupiterのAPIを使ってテストを書いた場合は不要。

あと、opentest4jというライブラリーも使われており、JUnit以外のテストフレームワークとも共通で使えそうな上位部分が定義されているらしい。

Gradleのbuild.gradleの記述例


JUnit4との主な相違点

 JUnit4JUnit5
ライセンスCPL(Common Public License)だったが、EPLに変わった?EPL(Eclipse Public License)
インポートimport static org.hamcrest.CoreMatchers.*;
import static org.junit.Assert.*;

import org.junit.Test;

import static org.junit.jupiter.api.Assertions.*;

import org.junit.jupiter.api.Test;
テストクラスの定義publicクラスpublicである必要は無い。
テストの継承 抽象クラスのメソッドやインターフェースのデフォルトメソッドに@Testを付けてテストを書いておき、
(それを継承したクラスから)テストを実行することが出来る。
抽象クラス・インターフェースのテストメソッド
内部クラス テストクラスの内部クラスにテストを記述することが出来る。
Nested
テストメソッドの定義@Test public void ~()
@Testアノテーションを付けたpublic voidで引数なしのメソッドが実行対象。
@Test void ~()
@Testアノテーションを付けたvoidで引数なしのメソッドが実行対象。
(publicである必要は無い)
テストクラスの
インスタンス生成
テストメソッドを実行する毎にテストクラスのインスタンスを作る。デフォルトでは、テストメソッドを実行する毎にテストクラスのインスタンスを作る。
インスタンス生成を1回だけにすることも出来る。
テストインスタンスのライフサイクル
全テストの実行前後@BeforeClass・@AfterClassを付けたstaticメソッドが、クラス内の全テストの実行前後に呼ばれる。@BeforeAll・@AfterAllを付けたメソッドが、クラス内の全テストの実行前後に呼ばれる。
インスタンスメソッドにする場合は、テストクラスのインスタンス生成を1回だけにする必要がある。
テストメソッド実行前後@Before・@Afterを付けたメソッドが、各テストメソッドの実行前後に呼ばれる。@BeforeEach・@AfterEachを付けたメソッドが、各テストメソッドの実行前後に呼ばれる。
テスト名の指定 @DisplayNameアノテーションでテスト名を付けることが出来る。
テストを実行しない方法テストメソッドに@Ignoreアノテーションを付ける。テストメソッドに@Disabledアノテーションを付ける。
テスト情報の取得 テストメソッドの引数にTestInfoを指定する事でテストクラス・テストメソッドの情報を取得できる。
等値のテストassertEquals(expected, actual)あるいは
assertThat(actual, is(expected))を使用。
assertEquals(expected, actual)を使用。
テスト失敗時のメッセージは第1引数に指定する。
assertEquals(message, expected, actual)
テスト失敗時のメッセージは最後の引数に指定する。
assertEquals(expected, actual, message)
assertEquals(expected, actual, () -> message)
例外のテスト@Testアノテーションの引数expectedに発生すべき例外クラスを指定する。assertThrows()を使用。
パラメーターテスト@Testの代わりに@Theoryを付ける。
@DataPointsを付けたフィールドでデータを指定する。
@Testの代わりに@ParameterizedTestを付ける。
@ValueSourceを付けてデータを指定する。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值