junit 4テストパラメータ化
1494 ワード
場合によっては、より包括的なテストのために、ターゲットオブジェクトをより包括的にテストするために複数のデータを構築する必要があります.一般的な方法は少し煩雑です.
junitは、パラメータ構造を定義すればパラメータ化することができる.
ここでは@Parameters注釈を用いてpublic staticメソッドに配置し、必要なパラメータセットを返します.テストクラスに@RunWith(Parameterized.class)を追加します.インスタンスコードは次のとおりです.
テスト対象クラス:
テストクラスは次のとおりです.
出力からtestSum()が3回走ったことがわかり、出力は以下の通りです.
junitは、パラメータ構造を定義すればパラメータ化することができる.
ここでは@Parameters注釈を用いてpublic staticメソッドに配置し、必要なパラメータセットを返します.テストクラスに@RunWith(Parameterized.class)を追加します.インスタンスコードは次のとおりです.
テスト対象クラス:
public class Calculate {
/**
* :
*
* @param first
* @param second
* @return
*/
public int sum(int first, int second) {
return first + second;
}
}
テストクラスは次のとおりです.
import static org.junit.Assert.assertEquals;
import java.util.Arrays;
import java.util.Collection;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;
@RunWith(Parameterized.class)
public class CalculateTest {
private int expected;
private int first;
private int second;
private Calculate calculate = new Calculate();
public CalculateTest(int expected, int first, int second) {
super();
this.expected = expected;
this.first = first;
this.second = second;
}
@Parameters
public static Collection<Integer[]> testDatas() {
// : 。
return Arrays.asList(new Integer[][] { { 3, 2, 1 }, { 5, 3, 2 },
{ 7, 6, 1 } });
}
@Test
public void testSum() {
System.out.println(" :" + first + "+" + second);
assertEquals(expected, calculate.sum(first, second));
}
}
出力からtestSum()が3回走ったことがわかり、出力は以下の通りです.
:2+1
:3+2
:6+1