Junit--參數化測試

爲保證單元測試的嚴謹性,咱們模擬了不一樣的狀況來測試方法,爲此寫了大量的單元測試方法。可是這些方法都差很少只是參數和指望值不一樣,如今使用Junit的參數化測試能很好的應對這個問題java

參數化測試的編寫稍微有點麻煩函數

1.  爲準備使用參數化測試的測試類指定特殊的運行器org.junit.runners.Parameterized。
2.  爲測試類聲明幾個變量,分別用於存放指望值和測試所用數據。
3.  爲測試類提供參數的方法聲明一個使用註解org.junit.runners.Parameterized.Parameters 修飾的,返回值爲java.util.Collection 的公共靜態方法,並在此方法中初始化全部須要測試的參數對。
4.  爲測試類聲明一個帶有參數的公共構造函數,並在其中爲第二個環節中聲明的幾個變量賦值。
5.  編寫測試方法,使用定義的變量做爲參數進行測試。單元測試

package com.tiamaes.junit;

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 TestWordDealUtilWithParam {
	
	private String expected;
	private String target;
	
	@SuppressWarnings("rawtypes")
	@Parameters
	public static Collection words(){
		return Arrays.asList(new Object[][]{
				{"EMPLOYEE_INFO","employeeInfo"},	//正常狀況
				{null,null},						//參數爲null
				{"",""},							//空字符串
				{"EMPLOYEE_INFO","EmployeeInfo"},	//首字母大寫
				{"EMPLOYEE_INFO_A","EmployeeInfoA"},//尾字母大寫
				{"EMPLOYEE_A_INFO","EmployeeAInfo"}	//多個大寫字母相連
		});
	}
	
	public TestWordDealUtilWithParam(String expected,String target){
		this.expected = expected;
		this.target = target;
	}
	
	@Test
	public void testWordFomat4DB() {
		assertEquals(this.expected, WordDealUtil.wordFomat4DB(this.target));
	}
	
}
相關文章
相關標籤/搜索