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

2024-06-11 10:48

本文主要是介绍Junit入门到掌握-11-JUnit高级-Parameterized参数化,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

这篇来学习一个新的注解,叫@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;}@Parameterspublic static List<Object[]> data() {return Arrays.asList(new Object[][] {{5, 5},{5, 10},{-12, 0},{50, 50},{1, 51}});}@Testpublic void test() {if(input > 0) {ts.addProtein(input);}else {ts.removeProtein(-input);}//断言,期待结果和total是不是相等assertEquals(expected, ts.getTotal());}
}

运行结果

这篇关于Junit入门到掌握-11-JUnit高级-Parameterized参数化的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1050958

相关文章

Java线程池核心参数原理及使用指南

《Java线程池核心参数原理及使用指南》本文详细介绍了Java线程池的基本概念、核心类、核心参数、工作原理、常见类型以及最佳实践,通过理解每个参数的含义和工作原理,可以更好地配置线程池,提高系统性能,... 目录一、线程池概述1.1 什么是线程池1.2 线程池的优势二、线程池核心类三、ThreadPoolE

SpringCloud Stream 快速入门实例教程

《SpringCloudStream快速入门实例教程》本文介绍了SpringCloudStream(SCS)组件在分布式系统中的作用,以及如何集成到SpringBoot项目中,通过SCS,可... 目录1.SCS 组件的出现的背景和作用2.SCS 集成srping Boot项目3.Yml 配置4.Sprin

Java JAR 启动内存参数配置指南(从基础设置到性能优化)

《JavaJAR启动内存参数配置指南(从基础设置到性能优化)》在启动Java可执行JAR文件时,合理配置JVM内存参数是保障应用稳定性和性能的关键,本文将系统讲解如何通过命令行参数、环境变量等方式... 目录一、核心内存参数详解1.1 堆内存配置1.2 元空间配置(MetASPace)1.3 线程栈配置1.

SpringMVC配置、映射与参数处理​入门案例详解

《SpringMVC配置、映射与参数处理​入门案例详解》文章介绍了SpringMVC框架的基本概念和使用方法,包括如何配置和编写Controller、设置请求映射规则、使用RestFul风格、获取请求... 目录1.SpringMVC概述2.入门案例①导入相关依赖②配置web.XML③配置SpringMVC

MySQL索引踩坑合集从入门到精通

《MySQL索引踩坑合集从入门到精通》本文详细介绍了MySQL索引的使用,包括索引的类型、创建、使用、优化技巧及最佳实践,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友... 目录mysql索引完整教程:从入门到入土(附实战踩坑指南)一、索引是什么?为什么需要它?1.1 什么

Java Lettuce 客户端入门到生产的实现步骤

《JavaLettuce客户端入门到生产的实现步骤》本文主要介绍了JavaLettuce客户端入门到生产的实现步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 目录1 安装依赖MavenGradle2 最小化连接示例3 核心特性速览4 生产环境配置建议5 常见问题

从基础到高级详解Go语言中错误处理的实践指南

《从基础到高级详解Go语言中错误处理的实践指南》Go语言采用了一种独特而明确的错误处理哲学,与其他主流编程语言形成鲜明对比,本文将为大家详细介绍Go语言中错误处理详细方法,希望对大家有所帮助... 目录1 Go 错误处理哲学与核心机制1.1 错误接口设计1.2 错误与异常的区别2 错误创建与检查2.1 基础

C#中通过Response.Headers设置自定义参数的代码示例

《C#中通过Response.Headers设置自定义参数的代码示例》:本文主要介绍C#中通过Response.Headers设置自定义响应头的方法,涵盖基础添加、安全校验、生产实践及调试技巧,强... 目录一、基础设置方法1. 直接添加自定义头2. 批量设置模式二、高级配置技巧1. 安全校验机制2. 类型

JavaScript中的高级调试方法全攻略指南

《JavaScript中的高级调试方法全攻略指南》什么是高级JavaScript调试技巧,它比console.log有何优势,如何使用断点调试定位问题,通过本文,我们将深入解答这些问题,带您从理论到实... 目录观点与案例结合观点1观点2观点3观点4观点5高级调试技巧详解实战案例断点调试:定位变量错误性能分

从入门到精通详解Python虚拟环境完全指南

《从入门到精通详解Python虚拟环境完全指南》Python虚拟环境是一个独立的Python运行环境,它允许你为不同的项目创建隔离的Python环境,下面小编就来和大家详细介绍一下吧... 目录什么是python虚拟环境一、使用venv创建和管理虚拟环境1.1 创建虚拟环境1.2 激活虚拟环境1.3 验证虚