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

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

代码2.2 参数化测试

要使用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的大小,进行相同数量的循环。执行这个单独的测试用例的效果等同于执行以下具有不同参数的测试用例。

这里我们要逐步分析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测试运行器。

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

时间: 2024-09-29 14:34:47

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

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

2.2 运行参数化测试 JUnit实战(第2版) Parameterized(参数化)的测试运行器允许你使用不同的参数多次运行同一个测试.代码2.2给出一个Parameterized运行器的实例(你可以在第1章的源代码示例中找到这个测试). 代码2.2 参数化测试 要使用Parameterized的测试运行器来运行一个测试类,那就必须要满足以下要求.首先,测试类必须使用@RunWith注释,并且要将Parameterized类作为它的参数..\Lucene实战\1.tif.其次,你必须声明测试中

《黑客秘笈——渗透测试实用指南(第2版)》—第1章1.5节构建渗透测试环境

1.5 构建渗透测试环境 在本书第1版中,收到很多关于为什么要让读者搭建和安装工具而不是创建脚本自动化完成这些工作的评论.主要原因是想让读者亲自经历这些步骤,这些工具都非常重要,搭建和安装的过程将有助于您知道武器库里都有什么工具.以Kali Linux为例,它包括大量工具,而且进行了很好的组织和归类,但是如果不知道这个工具已经安装了或者没使用它进行过单独的攻击,那么在紧急的情况下很难正确使用这个工具. 1.5.1 安装一个渗透测试环境 如果您根据本书第1版建立了测试环境,就可以跳过本节.众所周知

《黑客秘笈——渗透测试实用指南》—第1章1.1节搭建渗透测试主机

第1章 赛前准备--安装 黑客秘笈--渗透测试实用指南 本章将直接探讨攻击系统的配置方法.安全测试最为重要的方面就是有一个可重复的流程.所以,您需要有一套标准化的基准系统.测试工具和测试流程.本章将会讲解配置测试平台的方法,以及本书示例所需的额外工具的安装步骤.只要按照本章的步骤配置测试平台,您就能够重现后续章节中我所提供的案例.演示.好!让我们全力以赴.积极备战吧. 1.1 搭建渗透测试主机 黑客秘笈--渗透测试实用指南 在进行渗透测试的时候,我都会配置两套不同的测试主机.其中一台是Windo

《Android开发秘籍(第2版)》——第1.3节运行Android的设备

1.3 运行Android的设备 Android开发秘籍(第2版) 全世界有种类数以百计的Android设备和为数众多的制造商,设备包括电话.平板电脑.电视.车载音响.运动器械及其他辅助设备.软件可通过android.os.Build来获取目标设备信息,例如: if(android.os.Build.MODEL.equals("Nexus+One")) { ... } 所有Android支持的硬件由于操作系统的一些自然属性而具有一些共同点.Android系统由下列镜像文件(image)

《Android应用开发入门经典(第3版)》——第1.4节运行应用

1.4 运行应用 Android应用开发入门经典(第3版) 要运行这个应用需要执行下列步骤. 1.选中Hour1App并右击鼠标列出一个选项列表.当然还可以按下Control键并单击Mac.选择Run As,然后选择Android Application,如图1.9所示. 2.在接收到"Android AVD Error"错误消息时可以选择创建一个新的Android虚拟设备.选择Yes. 运行模拟器需要一个Android虚拟设备(AVD),它定义了模拟器中用于测试的设备的参数规格.有很

《Metasploit渗透测试手册》—第8章8.6节移植并测试新的漏洞利用代码模块

8.6 移植并测试新的漏洞利用代码模块 Metasploit渗透测试手册 在上节中学习了怎样使用可用的概念验证代码开发完整的Metasploit模块,本节中将把该模块保存到合适的位置,并测试其是否正常运转. 准备 了解漏洞利用代码模块要存储的文件夹位置是非常重要的,有助于追踪不同模块所在位置,同时也有助于Metasploit框架理解模块的基本用法.完整的模块脚本构建完成之后,在合适的位置将其保存. 怎样实现 由于上面开发的是漏洞利用代码模块,针对的目标是Windows操作系统,影响的是特定的文件

《验收测试驱动开发:ATDD实例详解》—第2章2.3节表格化测试

2.3 表格化测试 验收测试驱动开发:ATDD实例详解 现在,随着第一个实例的自动化,Tony可以简单地重用第一个测试的步骤对剩下的经讨论会确定的实例进行自动化.作为第一步,他需要将Valet.feature里的场景转换为一个表格化的实例场景框架.为了完成这个目标,他把30分钟的时长用一个占位符< parking duration >代替,并且把期望的价格用占位符< parking costs >代替,并把这个场景标记为场景框架.Tony把实际数值放在场景框架下记录所有实例数据的表

《Kali Linux渗透测试的艺术》—第2章2.5节通用渗透测试框架

2.5 通用渗透测试框架 Kali Linux渗透测试的艺术 Kali Linux属于通用型操作系统,它配备有多种安全评估工具和渗透测试工具.在没有合适的测试理论指导的情况下冒然使用这些工具,可能会导致测试失败,测试结果可能无法让人满意.因此,从技术管理的角度来看,遵循正规的测试框架对安全测试极为重要. 这一小节将通过黑盒测试的具体方法和白盒测试的通用测试方法介绍通用测试框架.它涵盖了典型的审计测试工作和渗透测试工作会涉及到的各个阶段.评估人员可以根据被测目标的具体情况对上述测试方法进行相应调整

《JUnit实战(第2版)》—— 导读

前言 JUnit实战(第2版)作为一个屡获殊荣的数学家,我无法容忍平庸.这就是数学所教给我的─不要停止,直到你把它完成,并且不仅要用好的方法,而且要用最好的方法. 当我开始编写软件时,我发现这条原则同样适用.我认识一些同事,他们对自己的工作非常马虎随便,并且我也看到了他们因为自己的疏忽大意而深受其害.他们不耐烦地完成他们的任务,从不担心他们开发的软件质量,更不用说寻找可能的最佳解决方案.对于那些家伙,重用相同的代码就意味着,在任何他们需要相同代码的地方简单地复制和粘贴它即可.我看到了不耐烦地尽快