Junitフレームワーク使用(2)--パラメトリックテスト


前の文章の実例を振り返る.ユニットテストの厳密性を保証するために,異なる状況をシミュレートして方法をテストし,そのために大量のユニットテスト方法を書いた.しかし、これらの方法の差は多くありません.パラメータと期待値が異なるだけで、Junitのパラメータ化テストを使用すると、この問題にうまく対応できます.
パラメトリックテストの作成は少し面倒です
1.パラメトリックテストを使用するテストクラスを準備するための特殊なドライバorgを指定する.junit.runners.Parameterized. 2.テストクラスに対していくつかの変数を宣言し、それぞれ期待値とテストに使用するデータを格納します.3.テストクラスにパラメータを提供する方法注釈orgを使用することを宣言する.junit.runners.Parameterized.Parameters修飾、戻り値java.util.Collectionの共通静的メソッドで、テストが必要なすべてのパラメータペアを初期化します.4.テストクラスにパラメータを持つ共通構造関数を宣言し、2番目のセクションで宣言されたいくつかの変数に値を割り当てます.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));
	}
	
}

この前の文章のテスト例の効果は同じです.