Junit入门到掌握-11-JUnit高级-Parameterized参数化

本文深入探讨了JUnit中参数化测试的应用,通过实例演示如何利用@Parameters注解进行数据驱动测试,有效提升测试效率和覆盖率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这篇来学习一个新的注解,叫@Parameters, 参数化的意思。什么时候需要用到参数化呢,在selenium中这个例子很好,就是我有一个500个用户数据,我需要重复测试这500个用户的登录功能。我们肯定只需要写一个方法,然后调用这个方法500次,每次方法传入参数不一样,这样应该能够完成这个测试需求。在单元测试中,如果一个方法的用例,采用边界值划分,有时候会产生十几个测试用例,这个时候我们就需要使用参数化。

 

1.参数化的数据源

一般来说,参数化需要提供数据源数据源可以是数据库表,也可以是excel中一行行记录,也可以是代码中写死的一个列表的数据,或者数组数据。大概过程就是,我们提前准备好这个数据源,例如一个二元数组,里面有5组数据。然后在单元测试用例类中的具体方法,使用参数化注解,告诉Junit,执行这个方法,需要使用外部参数化提供的数据源进行多次测试这个方法。

在Junit中,参数化@Parameters里面写的是一个静态方法。

 

2.参数化测试举例

这里新建一个测试类,ParameterizedTests.java, 写入下面的代码。

package test;

import static org.junit.Assert.assertEquals;

import java.util.Arrays;
import java.util.List;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;

import com.anthony.protein.TrackingService;

@RunWith(Parameterized.class)
public class ParametrizedTests {
	
	private int input;
	private int expected;
	
	private static TrackingService ts = new TrackingService();
	
	//构造方法
	public ParametrizedTests(int input, int expected) {
		this.input = input;
		this.expected = expected;
	}
	
	@Parameters
	public static List<Object[]> data() {
		return Arrays.asList(new Object[][] {
			{5, 5},
			{5, 10},
			{-12, 0},
			{50, 50},
			{1, 51}
			
		});
	}
	
	@Test
	public void test() {
		if(input > 0) {
			ts.addProtein(input);
		}else {
			ts.removeProtein(-input);
		}
		
		//断言,期待结果和total是不是相等
		assertEquals(expected, ts.getTotal());
	}
}

运行结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值