junit4 測試參數化

    在某些狀況下,爲了更全面的測試,咱們須要構建多組數據對目標對象進行更全面的測試,普通的作法就有點繁瑣。
java

     junit能夠是這種狀況參數化,只要定義好參數結構便可。sql

     這裏用到@Parameters註解,放在一個public static方法上,並返回所需的參數集合;另外測試類上加@RunWith(Parameterized.class)。實例代碼以下:函數

待測試類:測試

public class Calculate {

	/**
	 * 計算:返回兩個整數的和
	 * 
	 * @param first
	 * @param second
	 * @return
	 */
	public int sum(int first, int second) {

		return first + second;
	}
}

測試類以下:this

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()跑了三遍,輸出以下:spa

測試:2+1
測試:3+2
測試:6+1
相關文章
相關標籤/搜索