`

Junit与TestNG参数化测试比较

阅读更多

在TestNG中,直接使用@DataProvider进行参数化测试:

import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
import static org.testng.Assert.*;

public class Addition {
	public int add(int a, int b) {
		return a+ b;
	}
	
	@DataProvider(name = "addition")
	public Object[][] createData(){
		return new Object[][] {{1,2,3},{0,0,1},{-1,1,0},{-1,-2,-3}};
	}
	
	@Test(dataProvider = "addition")
	public void addtionTest(int a1, int a2, int result){
		Addition ad = new Addition();
		assertEquals(ad.add(a1, a2), result);
	}

}

 而在Junit中一定要新建一个类,在构造函数中初始化数据:

import static org.junit.Assert.*;

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 AdditionTest {
	private int d1, d2;
	private int result;
	public AdditionTest(int d1, int d2, int result) {
		super();
		this.d1 = d1;
		this.d2 = d2;
		this.result = result;
	}
	
	@Parameters
	@SuppressWarnings("unchecked")
	public static Collection getParamters(){
	    Object [][] object = {{1,2,3},{0,0,0},{-1,1,0},{-1,-2,-3}};  
	    return Arrays.asList(object);      
	}
	
	@Test
	public void testAddition(){
		Addition ad = new Addition();
		assertEquals(this.result, ad.add(this.d1, this.d2));
	}
	
}

 结论:相较之下,用TestNG去实现可以让代码更加简单一些

1
2
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics