《JUnit实战(第2版)》—第1章1.6节使用JUnit测试

简介:

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

1.6 使用JUnit测试
JUnit实战(第2版)
JUnit拥有许多功能,可以使编写、运行测试更加容易。通过本书,你将可以了解到这些功能在实际中的各种运用。

针对每个单元测试,单独测试类实例和类加载器,以避免副作用。
JUnit注释提供了资源初始化和回收方法:@Before、@BeforeClass、@After和@AfterClass。
各种不同的assert方法使得检查测试结果更加简单。
与各种流行工具(如Ant和Maven)的整合,以及与流行IDE(如Eclipse、NetBeans、IntelliJ和JBuilder)的整合。
事不宜迟,我们赶紧来看一下代码1.4,看看使用JUnit编写的简单Calculator测试会是什么样子。

代码1.4 使用JUnit编写的CalculatorTest程序


6fa62e15a14c8e5e083fca5490bf969c86e1933d

这是一个非常简单的测试,让我们来仔细分析这段代码。在..Lucene实战1.tif部分,我们首先定义了一个测试类。唯一的限制是这个类必须是公有的,我们可以对它任意命名。但通常的做法是在类名称的末尾添加“Test”字样。也要注意,虽然在JUnit 3中我们需要扩展TestCase类,但是在JUnit 4中,我们已经不需要这样做了。

在..Lucene实战2.tif部分,我们通过添加@Test注释1,把这个方法标记为一个单元测试方法。最好的做法是按照testXXX模式命名测试方法。因为JUnit没有方法名称的限制,所以你可以根据自己喜好命名你的方法;只要它们拥有了@Test注释,JUnit就会执行它们。

在..Lucene实战3.tif部分,我们通过创建Calculator类的一个实例(被测试的对象)开始进行测试,并且在..Lucene实战4.tif部分,就像前面的操作一样,我们通过调用测试方法并传递两个已知值来执行测试。

在..Lucene实战5.tif部分,JUnit框架开始显现威力了!为了检查测试结果,我们调用了assertEquals方法,这个方法是我们使用这个类的第一行中的静态导入来导入的。assertEquals方法的Javadoc如下所示:


78f1d15cad9d4b6ebf1a3ba61c0a48349f0d0844

在代码1.4中,我们传递给assertEquals以下参数:

f32647721599b5ed4b6e81507731c9836991ada7

因为传递给calculator的值分别是10和50,然后告诉assertEquals预期的和为60(因为我们相加的是整数,所以delta为0)。当我们调用calculator对象时,我们把返回值传给了一个叫做result的局部变量。因此,我们将这个变量传递给assertEquals,来与预期的值60做比较。

如果实际值不等于预期值,那么JUnit就抛出一个未经检查的异常,这将导致测试失败。

在多数情况下,delta参数可以是零,我们大可放心地忽略它。它总是伴随着非精确计算(其中包括许多浮点计算)而出现。delta提供了一个误差范围。如果实际值在expected - delta和expected + delta范围之内,则测试算通过。当进行带有舍入误差或截断误差的数学运算时,或者当断言一个关于文件修改日期的条件时,你就会发现它非常有用,因为这些数据的精确度取决于操作系统。

假设我们已经把代码1.1和代码1.4中的代码输入到C:junitbookch01-jumpstart目录下(如果是UNIX操作系统则是/opt/junitbook/ch01-jumpstart),那么我们首先通过在那个目录中打开命令行提示并输入以下命令来编译代码(我们假定javac可执行文件在操作系统的PATH中)。

如果是Windows操作系统:


751de15a84cfd7ef4ce13b785d0e901a21ec29c1

如果是UNIX操作系统:

74e7677889e8407af6e7155a0fdef852635ee691

我们现在通过输入以下命令,准备启动控制台测试运行器。

如果是Windows操作系统:


2bc31600e9306685056eba38b807a90552efc622

如果是UNIX操作系统:

6cf33b7d8f0c3700e0b02499d4c5714e37f0f164

图1.2显示了运行结果。

在代码1.4中,关于JUnit的CalculatorTest类,最值得一提的是,其代码要比代码1.2中的第一个CalculatorTest程序更易于编写。此外,我们也可以通过JUnit框架自动运行测试。

当我们在命令行提示下运行测试时(如图1.2所示),我们可以看到运行测试所花费的时间和已通过的测试数量。还有许多其他运行测试的方法,从IDE(如Eclipse)到构建工具(如Ant)。这个简单的例子只是让你初步领略了一下JUnit和单元测试的强大。


58a183af3fb73edb858a00380b33a4a4885f3faf

1注释首次在JDK 1.5中引入,所以为了使用它们,你需要安装JDK 1.5版本或者更高版本。
本文仅用于学习和交流目的,不代表异步社区观点。非商业转载请注明作译者、出处,并保留本文的原始链接。
相关文章
|
4月前
|
数据采集 JSON JavaScript
Cypress 插件实战:让测试更稳定,不再“偶尔掉链子”
本文分享如何通过自定义Cypress插件解决测试不稳定的痛点。插件可实现智能等待、数据预处理等能力,替代传统硬性等待,有效减少偶发性失败,提升测试效率和可维护性。文内包含具体实现方法与最佳实践。
|
5月前
|
存储 关系型数据库 测试技术
玩转n8n测试自动化:核心节点详解与测试实战指南
n8n中节点是自动化测试的核心,涵盖触发器、数据操作、逻辑控制和工具节点。通过组合节点,测试工程师可构建高效、智能的测试流程,提升测试自动化能力。
|
6月前
|
Web App开发 人工智能 JavaScript
主流自动化测试框架的技术解析与实战指南
本内容深入解析主流测试框架Playwright、Selenium与Cypress的核心架构与适用场景,对比其在SPA测试、CI/CD、跨浏览器兼容性等方面的表现。同时探讨Playwright在AI增强测试、录制回放、企业部署等领域的实战优势,以及Selenium在老旧系统和IE兼容性中的坚守场景。结合六大典型场景,提供技术选型决策指南,并展望AI赋能下的未来测试体系。
|
6月前
|
存储 人工智能 算法
AI测试平台实战:深入解析自动化评分和多模型对比评测
在AI技术迅猛发展的今天,测试工程师面临着如何高效评估大模型性能的全新挑战。本文将深入探讨AI测试平台中自动化评分与多模型对比评测的关键技术与实践方法,为测试工程师提供可落地的解决方案。
|
4月前
|
人工智能 自然语言处理 JavaScript
Playwright MCP在UI回归测试中的实战:构建AI自主测试智能体
Playwright MCP结合AI智能体,革新UI回归测试:通过自然语言驱动浏览器操作,降低脚本编写门槛,提升测试效率与覆盖范围。借助快照解析、智能定位与Jira等工具集成,实现从需求描述到自动化执行的闭环,推动测试迈向智能化、民主化新阶段。
|
4月前
|
Java 测试技术 数据库连接
【SpringBoot(四)】还不懂文件上传?JUnit使用?本文带你了解SpringBoot的文件上传、异常处理、组件注入等知识!并且带你领悟JUnit单元测试的使用!
Spring专栏第四章,本文带你上手 SpringBoot 的文件上传、异常处理、组件注入等功能 并且为你演示Junit5的基础上手体验
985 2
|
6月前
|
人工智能 缓存 测试技术
Playwright进阶指南 (6) | 自动化测试实战
2025企业级测试解决方案全面解析:从单元测试到千级并发,构建高可用测试体系。结合Playwright智能工具,解决传统测试维护成本高、环境依赖强、执行效率低等痛点,提升测试成功率,内容从测试架构设计、电商系统实战框架、高级测试策略、Docker化部署、CI/CD集成及AI测试应用,助力测试工程师掌握前沿技术,打造高效稳定的测试流程。
Playwright进阶指南 (6) | 自动化测试实战
|
5月前
|
人工智能 数据可视化 测试技术
AI 时代 API 自动化测试实战:Postman 断言的核心技巧与实战应用
AI 时代 API 自动化测试实战:Postman 断言的核心技巧与实战应用
710 11
|
6月前
|
算法 测试技术 API
从自学到实战:一位测试工程师的成长之路
在技术快速发展的今天,自动化测试已成为提升职场竞争力的关键技能。本文讲述了一位测试工程师从自学到实战的成长之路,分享他在学习UI、APP和API自动化过程中遇到的挑战,以及如何通过实际项目磨炼技术、突破瓶颈。他从最初自学的迷茫,到实战中发现问题、解决问题,再到得到导师指导,逐步掌握测试开发的核心思维,并向测试平台建设方向迈进。文章总结了他从理论到实践、从执行到思考的转变经验,强调了实战、导师指导和技术服务于业务的重要性。最后,邀请读者分享自己的技术突破故事,共同交流成长。
|
6月前
|
资源调度 前端开发 JavaScript
Jest 测试实战指南
本文系统讲解如何使用 Jest 进行高效的 JavaScript 函数测试,涵盖环境搭建、测试用例编写、模拟函数与快照测试等内容,帮助开发者提升代码质量与测试效率。
225 0