junit 4でのパラメータ化テスト


package com.zlp.test;

import static org.junit.Assert.*;

import java.util.Arrays;
import java.util.Collection;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;
import com.zlp.utils.Calculation;

@RunWith(Parameterized.class)
public class ParameterTest {
	private static Calculation calc;
	private int expceted;
	
	private int input1;
	
	private int input2;
	@Before
	public void init(){
		calc = new Calculation();
	}
	
	
	@Parameters
	public static Collection prepareData(){
		Object[][] object = {{3,1,2},{4,2,2},{-5,-7,2},{0,-4,4}};
		
		return Arrays.asList(object);
	}

	public ParameterTest(int expceted, int input1, int input2) {
		this.expceted = expceted;
		this.input1 = input1;
		this.input2 = input2;
	}
	@Test
	public void testAdd(){
		assertEquals(this.expceted, calc.add(input1, input2));
	}
}

注意点:
クラスの宣言で@RunWith(Parameterized.class)を宣言すると、クラスはデフォルトのテストランナを使用しないことを示し、提供されるメソッドで@Parametersメソッドを設定して修飾します.
同時に各パラメータに値を割り当て、最後にテストクラスを作成します.
以上の例のテストはすべて合格し、objectの値を{4,1,2}などに変更するとエラーが発生します.
すべてのアクチュエータはorgから継承する.junit.runner.Runner