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

简介:

本节书摘来异步社区《JUnit实战(第2版)》一书中的第1章,第1.6节,作者:【美】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程序

540996842e4a165018861588baf312c8a9de94a5

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

46be7c8fa35f9535ed4d9372fd11799bec256a93

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

67ec59ee64362d16809f5b7ea7bb54ddc276c9db

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

cbfb83fa8c3d22b1218101069de492408f0b8f5a

如果是UNIX操作系统:

b11765d2838f1b36575be7c230d44f06663aeaab

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

如果是Windows操作系统:

a11b96a33812553e17939122bcc727fcacb1ef31

如果是UNIX操作系统:

471bc46752735448719c7732593ab3c86485ac2e

图1.2显示了运行结果。

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

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

cbdc5d74819de02515dfedf2915b32bf509c02cc

图1.2 使用文本界面的测试运行器执行首个JUnit测试CalculatorTest

1注释首次在JDK 1.5中引入,所以为了使用它们,你需要安装JDK 1.5版本或者更高版本。

相关文章
|
18天前
|
机器学习/深度学习 PyTorch 算法框架/工具
目标检测实战(一):CIFAR10结合神经网络加载、训练、测试完整步骤
这篇文章介绍了如何使用PyTorch框架,结合CIFAR-10数据集,通过定义神经网络、损失函数和优化器,进行模型的训练和测试。
49 2
目标检测实战(一):CIFAR10结合神经网络加载、训练、测试完整步骤
|
18天前
|
机器学习/深度学习 编解码 监控
目标检测实战(六): 使用YOLOv8完成对图像的目标检测任务(从数据准备到训练测试部署的完整流程)
这篇文章详细介绍了如何使用YOLOv8进行目标检测任务,包括环境搭建、数据准备、模型训练、验证测试以及模型转换等完整流程。
413 1
目标检测实战(六): 使用YOLOv8完成对图像的目标检测任务(从数据准备到训练测试部署的完整流程)
|
18天前
|
PyTorch 算法框架/工具 计算机视觉
目标检测实战(二):YoloV4-Tiny训练、测试、评估完整步骤
本文介绍了使用YOLOv4-Tiny进行目标检测的完整流程,包括模型介绍、代码下载、数据集处理、网络训练、预测和评估。
64 2
目标检测实战(二):YoloV4-Tiny训练、测试、评估完整步骤
|
19天前
|
Java 程序员 应用服务中间件
「测试线排查的一些经验-中篇」&& 调试日志实战
「测试线排查的一些经验-中篇」&& 调试日志实战
15 1
「测试线排查的一些经验-中篇」&& 调试日志实战
|
6天前
|
Java 程序员 测试技术
Java|让 JUnit4 测试类自动注入 logger 和被测 Service
本文介绍如何通过自定义 IDEA 的 JUnit4 Test Class 模板,实现生成测试类时自动注入 logger 和被测 Service。
17 5
|
17天前
|
机器学习/深度学习 监控 计算机视觉
目标检测实战(八): 使用YOLOv7完成对图像的目标检测任务(从数据准备到训练测试部署的完整流程)
本文介绍了如何使用YOLOv7进行目标检测,包括环境搭建、数据集准备、模型训练、验证、测试以及常见错误的解决方法。YOLOv7以其高效性能和准确率在目标检测领域受到关注,适用于自动驾驶、安防监控等场景。文中提供了源码和论文链接,以及详细的步骤说明,适合深度学习实践者参考。
145 0
目标检测实战(八): 使用YOLOv7完成对图像的目标检测任务(从数据准备到训练测试部署的完整流程)
|
18天前
|
机器学习/深度学习 XML 并行计算
目标检测实战(七): 使用YOLOX完成对图像的目标检测任务(从数据准备到训练测试部署的完整流程)
这篇文章介绍了如何使用YOLOX完成图像目标检测任务的完整流程,包括数据准备、模型训练、验证和测试。
87 0
目标检测实战(七): 使用YOLOX完成对图像的目标检测任务(从数据准备到训练测试部署的完整流程)
|
18天前
|
机器学习/深度学习 算法 PyTorch
目标检测实战(五): 使用YOLOv5-7.0版本对图像进行目标检测完整版(从自定义数据集到测试验证的完整流程)
本文详细介绍了使用YOLOv5-7.0版本进行目标检测的完整流程,包括算法介绍、环境搭建、数据集准备、模型训练、验证、测试以及评价指标。YOLOv5以其高精度、快速度和模型小尺寸在计算机视觉领域受到广泛应用。
168 0
目标检测实战(五): 使用YOLOv5-7.0版本对图像进行目标检测完整版(从自定义数据集到测试验证的完整流程)
|
18天前
|
缓存 数据挖掘 测试技术
目标检测实战(三):YOLO-Nano训练、测试、验证详细步骤
本文介绍了YOLO-Nano在目标检测中的训练、测试及验证步骤。YOLO-Nano是一个轻量级目标检测模型,使用ShuffleNet-v2作为主干网络,结合FPN+PAN特征金字塔和NanoDet的检测头。文章详细说明了训练前的准备、源代码下载、数据集准备、参数调整、模型测试、FPS测试、VOC-map测试、模型训练、模型测试和验证等步骤,旨在帮助开发者高效实现目标检测任务。
30 0
目标检测实战(三):YOLO-Nano训练、测试、验证详细步骤
|
25天前
|
缓存 测试技术 Apache
告别卡顿!Python性能测试实战教程,JMeter&Locust带你秒懂性能优化💡
【10月更文挑战第1天】告别卡顿!Python性能测试实战教程,JMeter&Locust带你秒懂性能优化💡
53 4