《JUnit实战(第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 参数化测试

ae1f2a383b3d656b1edd2c866133853d9282fb10

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

01acacae6988e9bbdb76ad699292b1c4ab5bfa96

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

相关文章
|
26天前
|
Java 测试技术 程序员
junit单元测试
junit单元测试
|
6天前
|
数据采集 DataWorks 关系型数据库
DataWorks操作报错合集之在DataWorks运行任务时出现链接超时,但在测试连通性时显示正常连通是什么原因导致的
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
17 0
|
6天前
|
SQL DataWorks Java
DataWorks操作报错合集之在阿里云 DataWorks 中,代码在开发测试阶段能够成功运行,但在提交后失败并报错“不支持https”如何解决
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
21 1
DataWorks操作报错合集之在阿里云 DataWorks 中,代码在开发测试阶段能够成功运行,但在提交后失败并报错“不支持https”如何解决
|
6天前
|
SQL 人工智能 自然语言处理
让老板成为数据分析师--ChatGpt链接本地数据源实战测试
本文探究ChatGpt等AI机器人能否帮助老板快速的做数据分析?用自然语言同老板进行沟通,满足老板的所有数据分析的诉求?
|
7天前
|
测试技术 Python
python运行集成测试
【4月更文挑战第22天】
8 1
|
8天前
|
XML 测试技术 持续交付
python运行集成测试
【4月更文挑战第21天】
17 2
|
13天前
|
资源调度 JavaScript 测试技术
单元测试:编写和运行Vue组件的单元测试
【4月更文挑战第23天】本文探讨了为Vue组件编写单元测试的重要性,以及如何设置测试环境、编写和运行测试。通过使用Jest或Mocha作为测试框架,结合Vue Test Utils,可以独立测试组件的功能,如渲染、事件处理和状态管理。编写测试用例时,应注意覆盖各种行为,并使用断言验证组件状态。运行测试并观察结果,确保测试独立性和高覆盖率。单元测试是保证代码质量和维护性的关键,应随着项目发展持续更新测试用例。
|
19天前
|
Python
Pycharm运行提示(运行‘Python测试(00.py内)‘(u)
Pycharm运行提示(运行‘Python测试(00.py内)‘(u)
|
23天前
|
缓存 小程序 开发者
小程序,运行测试时卡在等待界面,持续加载不到资源
小程序,运行测试时卡在等待界面,持续加载不到资源
|
2月前
|
XML Java 测试技术
【Java优化实战】「微基准系列」带你脚踏实地的进行开发和使用JMH测试和提升应用程序和服务指南
【Java优化实战】「微基准系列」带你脚踏实地的进行开发和使用JMH测试和提升应用程序和服务指南
51 1