《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版本或者更高版本。
本文仅用于学习和交流目的,不代表异步社区观点。非商业转载请注明作译者、出处,并保留本文的原始链接。
相关文章
|
5月前
|
测试技术 持续交付 UED
软件测试的艺术:确保质量的实战策略
在软件开发的舞台上,测试是那把确保每个功能如交响乐般和谐奏响的指挥棒。本文将深入探讨软件测试的重要性、基本类型以及如何设计高效的测试策略。我们将通过一个实际的代码示例,展示如何运用这些策略来提升软件质量和用户体验。
|
2月前
|
存储 人工智能 编译器
【03】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-测试hello word效果-虚拟华为手机真机环境调试-为DevEco Studio编译器安装中文插件-测试写一个滑动块效果-介绍诸如ohos.ui等依赖库-全过程实战项目分享-从零开发到上线-优雅草卓伊凡
【03】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-测试hello word效果-虚拟华为手机真机环境调试-为DevEco Studio编译器安装中文插件-测试写一个滑动块效果-介绍诸如ohos.ui等依赖库-全过程实战项目分享-从零开发到上线-优雅草卓伊凡
78 10
【03】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-测试hello word效果-虚拟华为手机真机环境调试-为DevEco Studio编译器安装中文插件-测试写一个滑动块效果-介绍诸如ohos.ui等依赖库-全过程实战项目分享-从零开发到上线-优雅草卓伊凡
|
1月前
|
数据可视化 JavaScript 前端开发
从Postman到Apipost:我的动态参数测试实战踩坑记
作为一名全栈开发工程师,在开发用户中心模块时,我遇到了复杂参数API测试的挑战。最初使用Postman时,发现其在生成动态参数(如邮箱、手机号和日期)时存在诸多问题,导致测试效率低下甚至出错。例如,随机生成的邮箱格式无效等 后来,CTO推荐了Apipost,它提供了更智能的参数生成方式:支持真实邮箱、符合规范的手机号以及合法日期范围,极大提升了测试效率和准确性。通过对比,Apipost在处理复杂动态参数方面明显优于Postman,减少了维护成本并提高了团队协作效率。现在,我们已全面切换到Apipost,并利用其「参数组合测试」功能发现了多个边界条件bug。
|
1月前
|
机器学习/深度学习 设计模式 测试技术
Python 高级编程与实战:构建自动化测试框架
本文深入探讨了Python中的自动化测试框架,包括unittest、pytest和nose2,并通过实战项目帮助读者掌握这些技术。文中详细介绍了各框架的基本用法和示例代码,助力开发者快速验证代码正确性,减少手动测试工作量。学习资源推荐包括Python官方文档及Real Python等网站。
|
2月前
|
存储 数据可视化 测试技术
一个测试工程师的实战笔记:我是如何在Postman和Apipost之间做出选择的?
优秀的API测试工具应该具备: 分层设计:既有可视化操作,也开放代码层深度定制 场景感知:自动识别加密需求推荐处理方案 协议包容:不强迫开发者为了不同协议切换工具 数据主权:允许自主选择数据存储位置
74 7
|
1月前
|
Java 测试技术 Android开发
课时148:junit测试工具
课时148介绍了JUnit测试工具的使用,包括定义、配置和编写测试程序。JUnit是流行的用例测试工具,用于确保代码稳定性。
|
5月前
|
JSON Java 测试技术
SpringCloud2023实战之接口服务测试工具SpringBootTest
SpringBootTest同时集成了JUnit Jupiter、AssertJ、Hamcrest测试辅助库,使得更容易编写但愿测试代码。
144 3
|
5月前
|
缓存 测试技术 Apache
告别卡顿!Python性能测试实战教程,JMeter&Locust带你秒懂性能优化💡
告别卡顿!Python性能测试实战教程,JMeter&Locust带你秒懂性能优化💡
139 1
|
5月前
|
前端开发 数据管理 测试技术
前端自动化测试:Jest与Cypress的实战应用与最佳实践
【10月更文挑战第27天】本文介绍了前端自动化测试中Jest和Cypress的实战应用与最佳实践。Jest适合React应用的单元测试和快照测试,Cypress则擅长端到端测试,模拟用户交互。通过结合使用这两种工具,可以有效提升代码质量和开发效率。最佳实践包括单元测试与集成测试结合、快照测试、并行执行、代码覆盖率分析、测试环境管理和测试数据管理。
196 2
|
5月前
|
前端开发 JavaScript 数据可视化
前端自动化测试:Jest与Cypress的实战应用与最佳实践
【10月更文挑战第26天】前端自动化测试在现代软件开发中至关重要,Jest和Cypress分别是单元测试和端到端测试的流行工具。本文通过解答一系列问题,介绍Jest与Cypress的实战应用与最佳实践,帮助开发者提高测试效率和代码质量。
124 2

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等