valueSourceHOMEプログラミングJunit【SpringBoot】【Junit5】繰り返しTestの実装方法2パターン(DataPattern,ParameterizedTest)Advertisement何にも依存しない一番シンプルな繰り返しテストと、Junit5のParameterizedTestの実装方法について説明します。入力値を特定の値しか認めないロジック。}}最初のテストはこんな感じです。}パラメータ格納用のインナークラスを作り、テストメソッド上でまとめて生成したものを一気にテストしています。実行結果テストが失敗した時に、具体的にどこでFailとなったかはわからない。ParameterizedTest実装Junit5で可能なテストのやり方です。ParameterizedTestの実装方法として、パラメータの渡し方で複数のやり方があります。Junit5の準備jarを追加します。</dependency>junit-jupiter-paramsParameterizedTestで使用するアノテーションを有効にしますjunit-platform-commonsParameterizedTestでの値の渡し方の一つである、CsvSourceで必要となります。junit-jupiterJunit5を使えるようにします。@ArgumentsSourceDataPattern実装のようにパラメータ用のクラスファイルを作成し、@ArgumentsSourceの引数でクラスごと渡します。パラメータ用のクラスにはArgumentProviderをimplementsします。}パラメータ用のクラスはstaticクラスにする必要があります。オブジェクトのパラメータを渡したい時や、ちょっと複雑なAssertionをかけたい時に使えます。パラメータとして渡したクラスのメソッドも使えます。実行結果パラメータごとでどのようなテストか分かる。テストFail時もFailとなったパラメータだけ赤くなるので分かりやすい。ビルダーパターンを使ってパラメータを生成すると以下の感じです。}@MethodSourceパラメータ用のメソッドを作成して、テストメソッドの引数に渡します。}オブジェクトを渡すこともできます。@ArgumentsSourceではNestされたクラスの中にはパラメータクラスを作ることはできませんが、@MethodSourceはTestInstanceを使うことでNestクラス内にも実装できます。引数だけがシンプルに表示される。@CsvSource複数のパラメータをアノテーションの中でCsv形式で渡すことができます。オブジェクトは渡すことができません。パラメータの型は暗黙的に変換されます。日付だったら「yyyy-MM-dd」とか。}Nestクラスの中でも使えます。@ValueSource一つのパラメータを渡すことができます。オブジェクトは渡すことができません。}ParameterizedTestの中では一番シンプルです。バリデーションチェックのテストとかする時に使います。Nestクラスの中でも使えます。このテストだけDemoServiceのvalidationメソッドに対してテストをしています。実行結果まとめ大概のテストは全部@MethodSourceでやってしまえると思っています。簡単にできそうだと思ったら@CsvSourceか@ValueSourceで。@ArgumentsSourceはテストの実装自体もちょっとパワー使いますね。投稿一覧4年目で金融系SIerからアジャイル開発エンジニアにシフトした人。音楽とゲームとITと。業務知識ではなく技術力を蓄えたい。コメントをキャンセルメールアドレスが公開されることはありません。*サイト次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。投稿一覧4年目で金融系SIerからアジャイル開発エンジニアにシフトした人。音楽とゲームとITと。業務知識ではなく技術力を蓄えたい。WordPress.。