Web系開発メモ

Java, C#, HTML, CSS, JavaScript のことなどを書いてます。

JUnit5 CSVでテストの値を指定する方法(@CsvSource)

JUnit5 の @CsvSource を使って、テストで使用する値を CSV で設定する方法を書いていきます。

バージョン

動作確認で使用した製品のバージョンは以下の通りです。

1. 指定方法

@CsvSource の値に CSV を指定します。値を配列にすると、メソッドが複数回呼び出されます。

package org.example.csv;

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

import org.example.Calc;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.CsvSource;

class CalcTest {
  private final Calc calc = new Calc();

  @ParameterizedTest
  @CsvSource({  // CSVの内容が引数に設定されます。
    "1, 2, 3",  // x=1, y=2, expected=3
    "10, 20, 30"  // x=10, y=20, expected=30
  })
  void testAdd(int x, int y, int expected) {
    // 実行
    int result = calc.add(x, y);

    // 検証
    assertEquals(expected, result);
  }
}

@CsvSource を使う場合は、@ParameterizedTest を付与します。パラメーター化されたテストだと宣言する必要があります。

2. テスト対象クラス

動作確認で使用したテスト対象のクラスは以下の通りです。

package org.example;

public class Calc {
  public int add(int x, int y) {
    return x + y;
  }
}

関連記事