blogこの広告は、90日以上更新していないブログに表示しています。Guideをひととおり読んで写経してみたので、何回かに分けてまとめてみます。リポジトリはこちらです。簡単にまとめると(まとまってない)、こんなカンジです。(!?)任意のアクセス修飾子が使える(privateは無理っす)拡張を容易にする仕組みが設けられた(RuleとかTestRunnerがお役御免に。5でテストが実行されない(UP-TO-DATE判定される)など、気になる点はケッコーあるものの、現時点でもそれなりに使えるな、という印象を受けました。4の@BeforeClassに相当。4の@Beforeに相当。4の@Testに相当。4と同じアノテーションのように見えますが、FQCNは違うので要注意。4の@Afterに相当。4の@AfterClassに相当。}}要点をまとめると、以下のような感じです。それぞれ変更されています。変わっていないように見えますが、FQCNが違います。junit5リポジトリのprototype-1タグを覗いてみると、@TestInstanceというライフサイクルに影響しそうなアノテーションもありますが、ALPHA版には搭載されていません(個人的にはいらないかな)。大きな注意点としては、@BeforeAll、@AfterAllにstaticを付け忘れると、そのクラスに書かれたテストが1つも実行されないこと。失敗もスキップも中断もされず、完全にガン無視されます。skipped)の数が足りないです。failedの数だけ気にしていると、staticを付け忘れたことによってガン無視されたテストがあることに気付かないので要注意です。4では@BeforeClassや@AfterClassにstaticを付け忘れた場合、initializationErrorになるので何かおかしいことに気付くことができます。@DisplayName("EclipseのJUnitビューやテストレポートにはこの名前で出力されます。}}ご覧のとおりです。注意点としては、EclipseのQuickJUnitプラグインを使用している場合、@DisplayNameを付けているとinitializationErrorとなって実行できません。As]、[F11]キーなどで、QuickJUnitを介さなければ実行できます。ここはQuickJUnitの改善に期待ですね。5には同梱されません。assertTrue()などを使ってアサーションします。お望みなら別途hamcrestを導入することで、hamcrestマッチャーを使い続けることもできます。例外のアサーション例外のアサーションとしては、expectThrows()を使います。引数に期待する例外の型を、第二引数に例外を発生させる処理(4フェーズテストのExerciseフェーズ)をラムダ式で渡すことで、例外の有無とその型をアサートすることができます。戻り値として発生した例外オブジェクトが返されるので、続けてgetMessage()やgetCause()などをアサートすることが可能です。4のExpectedExceptionでは、例外を発生させる処理(4フェーズテストのExerciseフェーズ)よりも前に、期待結果(Verifyフェーズ)を書かなくてはいけなかったため、すごくモヤモヤしながらテストを書いていましたが、そんなモヤモヤとお別れできて私としては超嬉しいです!グループアサーショングループアサーションは、1つのテストケースメソッドの中に複数のアサーションを書く場合に使用します。こいつを使うことで、いずれかのアサーションが失敗した場合でも、後続のアサーションが中断されず、すべて実行されるようになります。上記のテストケースを実行すると、失敗したテスト結果が以下のようにまとめて表示されます。4の@Ignoreに相当します。skippedにカウントされます。4のassumeThat()の代替です。引数に渡すboolean(またはBooleanSuplierの戻り値)が条件を満たす場合のみ、テストが実行されます。abortedにカウントされます。@BeforeAllなメソッドに記述することで、そのクラスに書かれたテストケースを丸ごと飛ばすこともできます。}}テストの性質ごとにクラス分けしたい場合(初期化・終了処理を共通かしたい場合など)、構造化テストが使えます。5では以下の利点があります。外側のクラス(上記のOuterClass)にもテストケースを書けるようになった。内部クラスをstaticにする必要がなくなった。インナークラスを非staticにする場合は@BeforeAllと@AfterAllのライフサイクルメソッドは定義できません(コンパイルエラーになります)。次回予告とりあえず今日はこんなところで。次回はメソッドインジェクションと、defaultメソッドの活用を書く予定です。