MENU

JUnit5試したみた #2

エンジニアブログ

2018-01-05

第一印象は下北のバンドマン、内立良介です。

前回に引き続き、JUnit5について書きます。今回は、RepeatedTestについてです。

RepeatedTest

指定した回数@RepeatedTestを付与したテストメソッドを実行してくれます。具体的に言うと、@RepeatedTestのvalue属性に実行したい回数を指定します。

サンプルコード

実行結果

解説

BeforeEachは、各テストの各繰り返し回数ごとに実行される

以下の結果から見出しのことが言えます。

表示名がカスタマイズできる

RepeatedTestでは、先に説明したことに加えて、繰り返し回数ごとに表示名(displayName)をカスタマイズすることができます。

デフォルトの表示名は、RepeatedTest.SHORT_DISPLAY_NAMEである、「repetition [現在の実行回数] of [実行すべき回数]」です。

静的なテキストと動的なプレースホルダーから成り立つメッセージを、@RepeatedTestのname属性に指定します。

用意されているプレースホルダーは、次の3つになります。

============================

●{displayName}

@RepeatedTestメソッドのdisplayName

●{currentRepetition}

現在の実行回数

●{totalRepetitions}

実行すべき回数

============================

繰り返し回数ごとに表示名を変更しているテストが、customDisplayName()メソッドとcustomDisplayNameLongPattern()メソッドになります。

後者のテストでは、name属性にRepeatedTest.LONG_DISPLAY_NAMEを指定しています。

これを指定したときに表示されるメッセージは、「Details… :: repetition [現在の実行回数] of [実行すべき回数]」です。

 

ここで、現在の実行回数や実行すべき回数ってどう取得すればいいの?って疑問がでてくると思います。
RepetitionInfoインターフェースをインジェクトすることで解決できます。
これは、getCurrentRepetition()メソッドとgetTotalRepetitions()メソッドを持ったインターフェースで、@RepeatedTest、@BeforeEach、@AfterEachが付与されたメソッドにのみインジェクトすることができます。
@RepeatedTestが付与されたメソッドが存在しないクラスで、@BeforeEachまたは@AfterEachが付与されたメソッドにRepetitionInfoをインジェクトしようとすると、ParameterResolutionExceptionがスローされます。
customDisplayName()メソッドを見てもらえば、使い方がわかると思います。

 

次回は、ParameterizedTestについて書きます。

wajaの開発フロー

2017-12-29

BLOG/エンジニアブログ

JUnit5試したみた #1

2017-12-26

BLOG/エンジニアブログ

カード番号をカメラでスキャンする

2017-12-19

BLOG/エンジニアブログ