【單元測試】Junit 4(四)–Junit4參數化

1.0 前言

​ JUnit 4引入了一項名為參數化測試的新功能。參數化測試允許開發人員使用不同的值反覆運行相同的測試。

1.1 參數化設置

這裡我們直接上例子吧。

題目:

​ 輸入小寫的字元串。如字元串前綴為ab開頭,則將前綴ab替換為ef並列印出替換後字元串,返迴文字「替換前綴後的字元串為:」和替換後字元串值;如後綴為cd並且前綴不為ab,替換字元串中所有cd為gh並列印出替換後字元串,返迴文字「替換cd後的字元串為:」和替換後字元串值;否則全部字母大寫輸出,返迴文字「大寫字母的字元串為:」和轉換後的字元串值。編寫程式程式碼,使用JUnit框架編寫測試類對編寫的程式程式碼進行測試

編寫Demo01.java程式碼:

import java.util.Scanner;

public class Demo01 {
	
	public static String changeStr(String str) {
		
		String reg1 = "^ab.*";
		String reg2 = ".*cd$";
		if (str.matches(reg1)) {
			str = str.replaceFirst("ab", "ef");
			return "替換前綴後的字元串為:" + str;
		} else if (str.matches(reg2)) {
			str = str.replaceAll("cd", "gh");
			return "替換cd後的字元串為:"+ str;
		} else {
			str = str.toUpperCase();
			return "大寫字母的字元串為:"+ str;
		}
		
	}
}

編寫Demo01Test.java程式碼:

import static org.junit.Assert.*;

import java.util.Arrays;
import java.util.Collection;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;

@RunWith(Parameterized.class)
public class Demo01Test {
	
	@Parameterized.Parameters
	public static Collection<Object[]> data() {
		return Arrays.asList(new Object[][] {
			{ "abqwer", "替換前綴後的字元串為:efqwer" },
			{ "fjqwecdqwecd", "替換cd後的字元串為:fjqweghqwegh" },
			{ "qwer", "大寫字母的字元串為:QWER" }
			}
		);
	}
    
    private final String param;
	private final String result;
		
	public Demo01Test(String param, String result) {
		this.param = param;
		this.result = result;
	}		
	
	@Test
	public void teststr() {
		assertEquals(result, Demo01changeStr(param));
	}

}

主要可以拆分為五個步驟:

  1. 使用@RunWith(Parameterized.class)注釋測試類。
  2. 創建一個使用@Parameters注釋的公共靜態方法,該方法返回一個對象集合作為測試數據集。
  3. 創建一個公共構造函數,它接受相當於一行「測試數據」的內容。
  4. 為測試數據的每個「列」創建一個實例變數。
  5. 使用實例變數作為測試數據的來源創建測試用例。

以上就是這節的全部內容,如有錯誤,還請各位指正!