《数据结构与抽象:Java语言描述(原书第4版)》一2.1.5 测试核心方法

简介:

本节书摘来华章计算机《数据结构与抽象:Java语言描述(原书第4版)》一书中的第2章 ,第2.1.5节,[美]弗兰克M.卡拉诺(Frank M. Carrano) 蒂莫西M.亨利(Timothy M. Henry) 著 罗得岛大学  新英格兰理工学院 辛运帏 饶一梅 译 更多章节内容可以访问云栖社区“华章计算机”公众号查看。

2.1.5 测试核心方法

准备。既然我们已经定义了3个核心方法,就可以测试它们。但是BagInterface中的其他方法怎么办呢?因为ArrayBag(程序清单2-1中给出的)实现了BagInterface,所以Java语法检查程序将查看这个接口中声明的每个方法的定义。我们是否应该等到完成它们的定义后才开始测试?绝对不要!在你写方法时就进行测试会让你尽早发现逻辑错误。不过,不是写BagInterface中每个方法的完整实现,而是对可暂时忽略的方法给出它们的不完整定义。
一个不完整定义的方法称为存根(stub)。存根仅需要让语法检查器通过即可。例如,对于每个返回一个值的方法,通过添加一个return语句让其返回一个哑值来避免语法错误。返回布尔值的方法可以返回假。返回对象的方法返回null。而void方法可以简单地只有一个空方法体。
例如,方法remove最终将返回被删除的项,所以它的存根必须含有一个return语句,如下所示。
image

void方法clear的存根应该是
image

注意,如果你想在测试程序中调用存根,则存根应该显示一条信息来报告它被调用过。

程序设计技巧:不要等到完全实现ADT后才测试它。写存根,这是所需方法的不完整定义,可以尽早开始测试。
测试程序。程序清单2-2中的程序专门用来测试开发阶段的类ArrayBag的核心方法add和toArray。初始时,main方法使用默认构造方法创建一个空包。因为这个包的容量是25,所以如果你添加少于25个项,数组不应该满。因此,每次添加后,add方法都应该返回真。实际上,程序的描述性输出指明被测试的方法是正确的。

随后在main方法中,我们考虑容量为7的包,然后给它添加7个字符串。此时,如果试图进行第8次添加,add方法应该返回假。同样,程序的描述性输出表明方法是正确的。
程序清单2-2 测试ArrayBag类的核心方法的程序
image
image
image

程序设计技巧:方法的全面测试还应该包括实参取其对应参数合理范围内外值的情况。

注意,除了main方法外,ArrayBagDemo1还有其他两个方法。因为main是静态的,且调用这两个方法,所以它们也必须是静态的。方法testAdd的参数接收一个包和一个字符串数组。该方法使用循环将数组中的每个字符串添加到包中。它还测试了add方法的返回值。最后,方法displayBag的参数是一个包,并使用包的方法toArray来访问它的内容。一旦我们有一个包项的数组,就可以用循环来显示它们。

自测题8 在ArrayBagDemo1的main方法中执行下列语句的结果是什么?

相关文章
|
1月前
|
存储 人工智能 算法
数据结构与算法细节篇之最短路径问题:Dijkstra和Floyd算法详细描述,java语言实现。
这篇文章详细介绍了Dijkstra和Floyd算法,这两种算法分别用于解决单源和多源最短路径问题,并且提供了Java语言的实现代码。
69 3
数据结构与算法细节篇之最短路径问题:Dijkstra和Floyd算法详细描述,java语言实现。
|
24天前
|
测试技术 API 项目管理
API测试方法
【10月更文挑战第18天】API测试方法
41 1
|
1月前
|
安全 测试技术
北大李戈团队提出大模型单测生成新方法,显著提升代码测试覆盖率
【10月更文挑战第1天】北京大学李戈教授团队提出了一种名为“统一生成测试”的创新方法,有效提升了大模型如GPT-2和GPT-3在单一测试中的代码生成覆盖率,分别从56%提升至72%和从61%提升至78%。这种方法结合了模糊测试、变异测试和生成对抗网络等多种技术,克服了传统测试方法的局限性,在大模型测试领域实现了重要突破,有助于提高系统的可靠性和安全性。然而,该方法的实现复杂度较高且实际应用效果仍需进一步验证。论文可从此链接下载:【https://drive.weixin.qq.com/s?k=ACAAewd0AA48Z2kXrJ】
61 1
|
23天前
|
测试技术 UED
软件测试中的“灰盒”方法:一种平衡透明度与效率的策略
在软件开发的复杂世界中,确保产品质量和用户体验至关重要。本文将探讨一种被称为“灰盒测试”的方法,它结合了白盒和黑盒测试的优点,旨在提高测试效率同时保持一定程度的透明度。我们将通过具体案例分析,展示灰盒测试如何在实际工作中发挥作用,并讨论其对现代软件开发流程的影响。
|
10天前
|
测试技术 Go
go语言中测试工具
【10月更文挑战第22天】
22 4
|
14天前
|
Java 测试技术 Maven
Java一分钟之-PowerMock:静态方法与私有方法测试
通过本文的详细介绍,您可以使用PowerMock轻松地测试Java代码中的静态方法和私有方法。PowerMock通过扩展Mockito,提供了强大的功能,帮助开发者在复杂的测试场景中保持高效和准确的单元测试。希望本文对您的Java单元测试有所帮助。
27 2
|
1月前
|
Java C++ 索引
让星星⭐月亮告诉你,LinkedList和ArrayList底层数据结构及方法源码说明
`LinkedList` 和 `ArrayList` 是 Java 中两种常见的列表实现。`LinkedList` 基于双向链表,适合频繁的插入和删除操作,但按索引访问元素效率较低。`ArrayList` 基于动态数组,支持快速随机访问,但在中间位置插入或删除元素时性能较差。两者均实现了 `List` 接口,`LinkedList` 还额外实现了 `Deque` 接口,提供了更多队列操作。
23 3
|
1月前
|
存储 Java
数据结构第二篇【关于java线性表(顺序表)的基本操作】
数据结构第二篇【关于java线性表(顺序表)的基本操作】
30 6
|
1月前
|
测试技术 Python
自动化测试项目学习笔记(三):Unittest加载测试用例的四种方法
本文介绍了使用Python的unittest框架来加载测试用例的四种方法,包括通过测试用例类、模块、路径和逐条加载测试用例。
60 0
自动化测试项目学习笔记(三):Unittest加载测试用例的四种方法
|
1月前
|
测试技术 Python
自动化测试项目学习笔记(二):学习各种setup、tearDown、断言方法
本文主要介绍了自动化测试中setup、teardown、断言方法的使用,以及unittest框架中setUp、tearDown、setUpClass和tearDownClass的区别和应用。
60 0
自动化测试项目学习笔记(二):学习各种setup、tearDown、断言方法