《JUnit实战(第2版)》—第2章2.4节用Suite来组合测试

简介:

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

2.4 用Suite来组合测试
JUnit实战(第2版)
因为是一个简单的测试,所以你可以直接编译如代码2.1所示的简单的计算器测试程序,并把它交给控制台façade运行器,如下所示:


8b4369ed854fd77a6a73ed9faa9fbab0a6c31838

如果类路径配置正确的话,那么测试应当顺利运行。这非常简单—至少运行这么一个单独的测试用例是非常简单的。

2.4.1 组合一组测试类
下一步就是运行多个测试类。为了简化这个任务,JUnit提供了测试Suite。这个Suite是一个容器,用来把几个测试归在一起,并把它们作为一个集合一起运行。

JUnit设计Suite的目的就是为了运行一个或者多个测试用例。测试运行器会启动Suite;然后运行哪个测试用例是由Suite来决定的。

你可能会疑惑,在第1章最后给出的那个示例中,你并没有定义一个Suite,这个示例是如何运行起来的呢?为了使简单的事情可以保持简单,如果你没有提供一个自己的Suite,那么测试运行器会自动创建一个Suite。

默认的Suite会扫描你的测试类,找出所有以@Test注释的方法。默认的Suite会在内部为每个@Test方法创建一个测试类的实例。然后JUnit就会独立地执行每个@Test方法,以避免潜在的负面影响。

如果你想将另一个测试添加到CalculatorTest类,比如testSubtract,同时你使用@Test注释这个测试,那么默认的Suite就会自动包含这个测试。

Suite对象其实是一个Runner,可以执行测试类中所有@Test注释的方法。

代码2.3显示了如何将多个测试类组合成一个单独的测试集(test suite)。

代码2.3 将测试类组合为一个Suite


<ahttps://yqfile.alicdn.com/7682d282dcf8ff176ce70e97480582693102def7.jpeg" >

在代码2.3中,我们使用@RunWith注释指定了相应的运行器..Lucene实战1.tif,并且通过在@SuiteClasses注释中指定测试类,来列出我们想要在这个测试中包含的所有测试..Lucene实战2.tif。这些测试类中的所有@Test方法都将包含到该Suite中。

对于代码2.1中的CalculatorTest而言,默认的Suite可以用以下代码来表示:


b54e86a87aac18af2cda9102c810ecc525b21152

2.4.2 组合一组测试集
由于JUnit采用了一种精妙的构建方式,所以使用JUnit来创建一组测试集也就成为了可能。例如,代码2.4串联了几个不同的文件,以展示多个测试用例是如何组合成多个测试集,然后这些测试集又组合成了一个主测试集。

代码2.4 一组测试集


e8e2d60e1d640b372b651e408d8a88b0e371f721

为了简化这个示例,我们的测试集TestSuiteA与TestSuiteB分别只有一个测试用例。而真正的测试集应该包含多个测试类,就像我们的主测试集。

你可以运行这段代码中的任何一个类,比如一个JUnit测试、两个测试类中的任意一个、两个测试集中的任意一个,甚至是主测试集。图2.2展示了在Eclipse中运行主测试集后的结果。


ebfb70fe89fe26aa0388b9905f6804b9f693d656

测试集提供了一种强有力的组织测试的方式。当然,这种便利性并非JUnit独有,在下一小节中你将会看到,其他工具也具有这样的功能,这将使我们重新考虑任何JUnit测试集的创建。

2.4.3 Suite、IDE、Ant与Maven
Ant与Maven也提供了运行多组测试类和测试集的功能,你可以通过正则表达式的类型、要运行的测试类和测试集的名称来指定运行哪些测试类和测试集。另外,有些IDE(比如Eclipse)允许你在某个指定的包或者源代码目录中运行所有的测试类与Suite。这足以让我们重新考虑是否值得在最初的地方创建JUnit的Suite。

当然,如果你想在Java环境中组织你的测试,而不依赖于你的构件系统能力,那么JUnit的Suite是非常有用的。因为一般情况下构建系统都是由专门的人员或者团队来维护,而不是开发者自己。同样,你可能不希望依赖于任何指定的IDE以及它的JUnit集成能力。

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

相关文章
|
22天前
|
SQL JavaScript 前端开发
基于Java访问Hive的JUnit5测试代码实现
根据《用Java、Python来开发Hive应用》一文,建立了使用Java、来开发Hive应用的方法,产生的代码如下
49 6
|
1月前
|
缓存 测试技术 Apache
告别卡顿!Python性能测试实战教程,JMeter&Locust带你秒懂性能优化💡
【9月更文挑战第5天】性能测试是确保应用在高负载下稳定运行的关键。本文介绍Apache JMeter和Locust两款常用性能测试工具,帮助识别并解决性能瓶颈。JMeter适用于测试静态和动态资源,而Locust则通过Python脚本模拟HTTP请求。文章详细讲解了安装、配置及使用方法,并提供了实战案例,帮助你掌握性能测试技巧,提升应用性能。通过分析测试结果、模拟并发、检查资源使用情况及代码优化,确保应用在高并发环境下表现优异。
47 5
|
1月前
|
测试技术 Apache 数据库
从慢如蜗牛到飞一般的感觉!Python性能测试实战,JMeter&Locust助你加速🏃‍♂️
【9月更文挑战第6天】你的Python应用是否曾因响应缓慢而让用户望而却步?借助JMeter与Locust,这一切将迎刃而解。JMeter作为Apache基金会的明星项目,以其强大的跨平台和多协议支持能力,成为性能测试领域的魔法师;而Locust则以Python的简洁与高效,让性能测试更加灵活。通过实战演练,你可以利用这两款工具轻松识别并解决性能瓶颈,优化数据库查询、网络配置等,最终使应用变得敏捷高效,轻松应对高并发挑战。
15 1
|
2月前
|
测试技术 API 开发者
.NET单元测试框架大比拼:MSTest、xUnit与NUnit的实战较量与选择指南
【8月更文挑战第28天】单元测试是软件开发中不可或缺的一环,它能够确保代码的质量和稳定性。在.NET生态系统中,MSTest、xUnit和NUnit是最为流行的单元测试框架。本文将对这三种测试框架进行全面解析,并通过示例代码展示它们的基本用法和特点。
68 7
|
1月前
|
Kubernetes Linux API
CentOS 7.6使用kubeadm部署k8s 1.17.2测试集群实战篇
该博客文章详细介绍了在CentOS 7.6操作系统上使用kubeadm工具部署kubernetes 1.17.2版本的测试集群的过程,包括主机环境准备、安装Docker、配置kubelet、初始化集群、添加节点、部署网络插件以及配置k8s node节点管理api server服务器。
63 0
CentOS 7.6使用kubeadm部署k8s 1.17.2测试集群实战篇
|
2月前
|
IDE Java 测试技术
揭秘Java高效编程:测试与调试实战策略,让你代码质量飞跃,职场竞争力飙升!
【8月更文挑战第30天】在软件开发中,测试与调试对确保代码质量至关重要。本文通过对比单元测试、集成测试、调试技巧及静态代码分析,探讨了多种实用的Java测试与调试策略。JUnit和Mockito分别用于单元测试与集成测试,有助于提前发现错误并提高代码可维护性;Eclipse和IntelliJ IDEA内置调试器则能快速定位问题;Checkstyle和PMD等工具则通过静态代码分析发现潜在问题。综合运用这些策略,可显著提升代码质量,为项目成功打下坚实基础。
48 2
|
2月前
|
API 开发者 Java
API 版本控制不再难!Spring 框架带你玩转多样化的版本管理策略,轻松应对升级挑战!
【8月更文挑战第31天】在开发RESTful服务时,为解决向后兼容性问题,常需进行API版本控制。本文以Spring框架为例,探讨四种版本控制策略:URL版本控制、请求头版本控制、查询参数版本控制及媒体类型版本控制,并提供示例代码。此外,还介绍了通过自定义注解与过滤器实现更灵活的版本控制方案,帮助开发者根据项目需求选择最适合的方法,确保API演化的管理和客户端使用的稳定与兼容。
74 0
|
2月前
|
测试技术
如何使用 JUnit 测试方法是否存在异常
【8月更文挑战第22天】
19 0
|
23天前
|
移动开发 JSON Java
Jmeter实现WebSocket协议的接口测试方法
WebSocket协议是HTML5的一种新协议,实现了浏览器与服务器之间的全双工通信。通过简单的握手动作,双方可直接传输数据。其优势包括极小的头部开销和服务器推送功能。使用JMeter进行WebSocket接口和性能测试时,需安装特定插件并配置相关参数,如服务器地址、端口号等,还可通过CSV文件实现参数化,以满足不同测试需求。
106 7
Jmeter实现WebSocket协议的接口测试方法
|
23天前
|
JSON 移动开发 监控
快速上手|HTTP 接口功能自动化测试
HTTP接口功能测试对于确保Web应用和H5应用的数据正确性至关重要。这类测试主要针对后台HTTP接口,通过构造不同参数输入值并获取JSON格式的输出结果来进行验证。HTTP协议基于TCP连接,包括请求与响应模式。请求由请求行、消息报头和请求正文组成,响应则包含状态行、消息报头及响应正文。常用的请求方法有GET、POST等,而响应状态码如2xx代表成功。测试过程使用Python语言和pycurl模块调用接口,并通过断言机制比对实际与预期结果,确保功能正确性。
101 3
快速上手|HTTP 接口功能自动化测试