《JUnit实战(第2版)》—第2章2.2节运行参数化测试

简介:

本节书摘来自异步社区《JUnit实战(第2版)》一书中的第2章2.2节运行参数化测试,作者【美】Petar Tahchiev , Felipe Leme , Vincent Massol , Gary Gregory,更多章节内容可以访问云栖社区“异步社区”公众号查看。

2.2 运行参数化测试
JUnit实战(第2版)
Parameterized(参数化)的测试运行器允许你使用不同的参数多次运行同一个测试。代码2.2给出一个Parameterized运行器的实例(你可以在第1章的源代码示例中找到这个测试)。

代码2.2 参数化测试


37c0dc507beb8e24a343a99258d815a74458923b

要使用Parameterized的测试运行器来运行一个测试类,那就必须要满足以下要求。首先,测试类必须使用@RunWith注释,并且要将Parameterized类作为它的参数..Lucene实战1.tif。其次,你必须声明测试中所使用的实例变量..Lucene实战2.tif,同时提供一个用@Parameters注释的方法..Lucene实战3.tif,这里提供的是getTestParameters方法。此外,这个方法的签名必须是@Parameters public static java.util.Collection,无任何参数。Collection元素必须是相同长度的数组。这个数组的长度必须要和这个唯一的公共构造函数的参数数量相匹配。在我们的这个例子中,每个数组包含了3个元素,因为公共构造函数有3个参数。我们的示例使用这个方法来为测试提供输入值和预期的输出值。因为我们想要测试Calculator程序的add方法,所以我们提供了3个参数:expected值与两个待求和的值。在..Lucene实战4.tif处,我们为测试指定了需要的构造函数。注意,这次我们的测试用例没有无参数的构造函数,而有一个可以为测试接受参数的构造函数。在..Lucene实战5.tif处,我们最终实现了sum @Test方法,该方法实例化了Calculator程序..Lucene实战6.tif,并断言调用了我们所提供的参数..Lucene实战7.tif。

运行这个测试,将会根据@Parameters方法返回的Collection的大小,进行相同数量的循环。执行这个单独的测试用例的效果等同于执行以下具有不同参数的测试用例。


e335e6a58738387ea4f018d82f31b1aaf626a6e9

这里我们要逐步分析JUnit的运行过程,以充分理解这项强大的功能:JUnit调用了静态方法getTestParameters..Lucene实战3.tif。接下来,JUnit为getTestParameters集合中的每个数组进行循环..Lucene实战3.tif。然后,JUnit调用了唯一的公共构造函数..Lucene实战4.tif。如果存在多个公共构造函数,JUnit就会抛出一个断言错误。JUnit使用由数组元素构成的一系列参数来调用构造函数..Lucene实战4.tif。在这个示例中,JUnit使用数组中的第一个元素调用了有3个参数的构造函数..Lucene实战4.tif,而这个元素本身就是一个数组:{2,1,1}。然后JUnit会像平时一样调用@Test方法..Lucene实战5.tif。JUnit会为getTestParameters集合中的下一个数组重复以上过程..Lucene实战3.tif。

当你将这个测试结果与上一个示例进行比较时,你就会发现,参数化的JUnit测试运行器运行了同一个方法3次,为@Parameters集合中的每个值运行一次;而上一个示例只运行了一个测试。

JUnit的Parameterized类是JUnit众多测试运行器中的一个。测试运行器可以让你控制JUnit如何运行测试。接下来,我们来看一下其他的JUnit测试运行器。

本文仅用于学习和交流目的,不代表异步社区观点。非商业转载请注明作译者、出处,并保留本文的原始链接。

相关文章
|
8月前
|
人工智能 Java 测试技术
Spring Boot 集成 JUnit 单元测试
本文介绍了在Spring Boot中使用JUnit 5进行单元测试的常用方法与技巧,包括添加依赖、编写测试类、使用@SpringBootTest参数、自动装配测试模块(如JSON、MVC、WebFlux、JDBC等),以及@MockBean和@SpyBean的应用。内容实用,适合Java开发者参考学习。
942 0
|
4月前
|
Java 测试技术 数据库连接
【SpringBoot(四)】还不懂文件上传?JUnit使用?本文带你了解SpringBoot的文件上传、异常处理、组件注入等知识!并且带你领悟JUnit单元测试的使用!
Spring专栏第四章,本文带你上手 SpringBoot 的文件上传、异常处理、组件注入等功能 并且为你演示Junit5的基础上手体验
985 2
|
9月前
|
监控 安全 测试技术
【01】卓伊凡收到冒充税务机关的诈骗程序-决定在沙盒Sandbox环境中运行测试下-广大企业同胞们注意防诈骗
【01】卓伊凡收到冒充税务机关的诈骗程序-决定在沙盒Sandbox环境中运行测试下-广大企业同胞们注意防诈骗
247 14
【01】卓伊凡收到冒充税务机关的诈骗程序-决定在沙盒Sandbox环境中运行测试下-广大企业同胞们注意防诈骗
|
12月前
|
缓存 Java 测试技术
【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
1716 3
【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
|
测试技术 Python
自动化测试项目学习笔记(一):unittest简单运行(初始化,清除,设置测试行为)
本文介绍了Python的unittest框架的基础用法,包括测试初始化(setup)、清除(tearDown)函数的使用,以及assertEqual和assertGreaterEqual等断言方法,并展示了如何创建测试用例,强调了测试函数需以test_开头才能被运行。
273 1
自动化测试项目学习笔记(一):unittest简单运行(初始化,清除,设置测试行为)
|
机器学习/深度学习 自然语言处理 前端开发
前端神经网络入门:Brain.js - 详细介绍和对比不同的实现 - CNN、RNN、DNN、FFNN -无需准备环境打开浏览器即可测试运行-支持WebGPU加速
本文介绍了如何使用 JavaScript 神经网络库 **Brain.js** 实现不同类型的神经网络,包括前馈神经网络(FFNN)、深度神经网络(DNN)和循环神经网络(RNN)。通过简单的示例和代码,帮助前端开发者快速入门并理解神经网络的基本概念。文章还对比了各类神经网络的特点和适用场景,并简要介绍了卷积神经网络(CNN)的替代方案。
1967 1
|
SQL 分布式计算 NoSQL
大数据-170 Elasticsearch 云服务器三节点集群搭建 测试运行
大数据-170 Elasticsearch 云服务器三节点集群搭建 测试运行
378 4
参数化测试
参数化测试
255 0
|
Linux C#
【Azure App Service】C#下制作的网站,所有网页本地测试运行无误,发布至Azure之后,包含CHART(图表)的网页打开报错,错误消息为 Runtime Error: Server Error in '/' Application
【Azure App Service】C#下制作的网站,所有网页本地测试运行无误,发布至Azure之后,包含CHART(图表)的网页打开报错,错误消息为 Runtime Error: Server Error in '/' Application
165 0
|
测试技术
如何使用 JUnit 测试方法是否存在异常
【8月更文挑战第22天】
655 0