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;


/**
 * 参数化测试运行器 
 * 使用不同参数多次运行同一测试
 * 
 * 运行这个测试,会根据@Parameters方法返回的Collection的大小进行循环。
 * 执行这个单独的测试用例效果等同于执行以下不同参数的测试用例:
 * sum: assertEquals(2, calculator.add(1,1),0);
 * sum: assertEquals(3, calculator.add(2,1),0);
 * sum: assertEquals(4, calculator.add(3,1),0);
 * 
 * 
 * JUnit运行过程:
 * 1.JUnit调用静态方法getTestParameters();
 * 2.对getTestParameters()集合中每个数据进行循环。
 * 3.调用构造方法(如果存在多个构造方法,JUnit会抛出异常)
 * java.lang.IllegalArgumentException: Test class can only have one constructor
 * 4.JUnit会使用数组元素来构成参数调用构造方法。
 * 5.调用@Test方法。
 * 6.继续为集合中下一个数组重复以上过程。
 * 
 * @author fanxl-4827
 *
 */




/**
 * 要使用Parameterized的测试运行器来运行测试类,测试类必须使用@RunWich注释
 * 并将Parameterized类作为测试类的参数
 */
@RunWith(value = Parameterized.class)
public class ParameterizedTest {


/*
* 声明测试中使用的实例变量
*/
private double expected;
private double num1;
private double num2;


/**
* 为测试提供输入值和期望的输出值
* @return Collection
*/
//该方法需要@Parameters注释,用于获取测试参数
@Parameters
public static Collection<Integer[]> getTestParameters(){
//返回值类型必须是Collection
return Arrays.asList(new Integer[] [] {
/*
* 数组元素必须是相同长度的数组,并且数组长度和构造方法参数数量一致


* 实例中数组中包含3个元素,和构造方法参数数量一致
* 此处我们要测试Calculator类的add方法,所以提供了三个参数:
* expected值和两个待求和的值
*/
{2,1,1},
{3,2,1},
{4,3,1},
});
}

public ParameterizedTest(double expected, double num1, double num2) {
this.expected = expected;
this.num1 = num1;
this.num2 = num2;
}

public ParameterizedTest( double num1, double num2) {
this.num1 = num1;
this.num2 = num2;
}

@Test
public void sum() {
Calculator calc = new Calculator();
assertEquals(expected, calc.add(num1, num2), 0);
}

}



public class Calculator {


public double add(double number1, double number2) {
return number1 + number2;
}


}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值