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

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程序

这是一个非常简单的测试,让我们来仔细分析这段代码。在..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如下所示:

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

因为传递给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操作系统:

如果是UNIX操作系统:

我们现在通过输入以下命令,准备启动控制台测试运行器。
如果是Windows操作系统:

如果是UNIX操作系统:

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

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

1注释首次在JDK 1.5中引入,所以为了使用它们,你需要安装JDK 1.5版本或者更高版本。
本文仅用于学习和交流目的,不代表异步社区观点。非商业转载请注明作译者、出处,并保留本文的原始链接。

时间: 2024-10-27 11:30:14

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

《JUnit实战(第2版)》—第2章2.1节探索JUnit核心

第2章 探索JUnit的核心JUnit实战(第2版)Mistakes are the portals of discovery. 错误是发现之门. -James Joyce 本章重点 使用核心JUnit类理解JUnit的机制理解JUnit的生命周期在第1章中,我们已经明确了我们需要一种可靠的.可复用的方法来测试我们的程序.我们的解决方案就是编写或复用一个框架来驱动测试代码,以测试程序的API.因为我们的程序对现有的类增加了新的类.新的方法,所以我们也需要增加相应的测试代码.经验告诉我们,有时候类

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

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

《JUnit实战(第2版)》—第1章1.5节安装JUnit

1.5 安装JUnit JUnit实战(第2版) 为了使用JUnit来编写应用程序测试,就需要将JUnit的JAR文件添加到项目的编译classpath(类路径)和执行classpath中去,可以按照以下步骤操作. JUnit发布包包含了几个测试例子,你可以运行它们来熟悉JUnit测试的执行. 将JUnit发布包的ZIP文件解压缩到计算机操作系统上的一个目录(如Windows系统上的C:\或者UNIX操作系统上的/opt/)下. 在这个目录中,解压缩操作将会为了刚下载的JUnit发布包创建一个子

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

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

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

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

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

《Android 开发入门与实战(第二版)》——6.10节本章小结

6.10 本章小结Android 开发入门与实战(第二版)本章主要对Android中最重要的组件之一Activity进行了基本的讲解.在本章的最开始就已经说明了Activity对整个应用程序的重要性,所以学好Activity可以说是开发Android应用程序必备基础技能之一,尤其是对Activity的生命周期以及基本状态的了解,掌握了这些,在开发应用时,你就能游刃有余地把握每个Activity不同时期的不同状态,从而做出最合理的操作.最后又补充了一个Activity的小实例,希望大家能跟着本书动