CS61B srping 2018 lab03 https://sp18.datastructur.es/

news/2024/12/25 15:42:16/文章来源:https://www.cnblogs.com/nulixuexipython/p/18624321

Unit Testing with JUnit, Debugging

准备

装好 CS61B插件(emmmmm,不装也没事)
把lab2 的IntList.java 复制到 lab3/IntList 文件夹.
看看关于测试的课程视频

介绍

啊?

JUnit是java测试框架,现在要用JUnit进行单元测试,单元Unit就是把程序分成小块的单元,一个单元的功能尽量少,单独测试,分而治之。

JUnit语法

LinkedListDequeTest 中手动(自动化程度低)编写的测试程序和使用JUnit编写的测试程序没啥本质区别,但是JUnit提供的各种方法可以避免不必要的重复操作,ArithmeticTest.java中是关于JUnit的例子(先别打开IntelliJ呃呃呃) ,
@Test 必须加,所有测试方法必须非静态non-static,assertEquals就是测试 , 是否 equal的方法

@Test
public void testMethod() {assertEquals(<expected>, <actual>);
}

从这开始,要使用IntelliJ了。

Running JUnit Tests in IntelliJ 在 IntelliJ中 运行JUnit 测试

先把lab2 的IntList.java 复制到 lab3/IntList 文件夹。

先看看ArithmeticTest 文件,如果设置正确,运行后,应该可以看到下图的类似结果,

因为这里用了 CS61B renderer(呃呃呃),显示结果和default renderer会有点差别,你可以切换,
办法有好多种,比如右键单击,到菜单栏切换,或者在右上角功能区切换。



然后先把 Arithmetic 中的错误改好吧。可以用眼睛瞅,也可以调试看看,你随便。

//这是默认的 有错误的 那段程序文本。。。public static int sum(int a, int b) {return a * b;}   

Intlists

IntList.of 方法来创建 IntList, 比如IntList myList = IntList.of(0, 1, 2, 3); 会生成0 -> 1 -> 2 -> 3 -> null这样的list, Copy your IntList.java that you created for lab2 into the lab3/IntList folder,向 IntListTest.java加入一个新测试,测.reverse()方法(还没编写具体内容),这里要'test driven'。

Test a Reverse Method 先测试Reverse方法

先别写好 reverse方法,先写测试,测试必须至少包含以下三个方面:

  1. 函数返回一个reversed的list
  2. 必须是destructive,可以用assertNotEquals来做
  3. 对函数输入一个null,函数也能正常工作

@Test(timeout = 1000)让测试不会长时间卡死。

Writing a Reverse Method 编写Reverse方法

先写个 空的reverse方法,单纯为了编译通过(要是用命令行运行,那必须加个main方法,用IDE则不用),第一次测试,那测试肯定fail。
然后编写与一个通过上面三个条件的测试即可,week 3 discussion solutions有答案。

下方是 两个版本的reverse 方法

  public static  IntList reverse(IntList l){if(l.rest==null||l==null){return l;}IntList reverse = null;while(l!=null){IntList second = l.rest;l.rest=reverse;reverse=l;l=second;}return reverse;}public static  IntList reReverse(IntList l){if(l.rest==null||l==null){return l;}IntList second = l.rest;IntList reverse=  reReverse(second);second.rest=l;l.rest=null;return reverse;}

A Debugging Mystery 调试

额,提供了两个文件如下,把bug 调试/找出来。(但没说要改),如果要编写测试看,assertTrue(boolean) 和 assertTrue(String, boolean)可能很有用。

public class HorribleSteve {public static void main(String [] args) {int i = 0;for (int j = 0; i < 500; ++i, ++j) {if (!Flik.isSameNumber(i, j)) {break; // break exits the for loop!}}System.out.println("i is " + i);}
}
/** An Integer tester created by Flik Enterprises. */
public class Flik {public static boolean isSameNumber(Integer a, Integer b) {return a == b;}
}

嗯,我没发现问题在哪,我就知道 Integer a , Interger b 要改成 int a ,int b 。。。emmmmmm

Deque Unit Tests 为Deque编写测试

如果你会,可以为LinkedListDeque and ArrayDeque编写测试。 ?我后面想起来可能会写

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/858680.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

摄像机实时接入分析平台视频分析网关:如何评估视频分析系统的性能?

在当今这个数字化、智能化快速发展的时代,视频分析系统已成为安全监控、交通管理、商业智能等多个领域不可或缺的技术支撑。这些系统的性能评估对于确保其有效性和可靠性至关重要。以下是对视频分析系统性能评估的关键指标和方法的详细探讨,这些评估将帮助我们深入了解系统的…

Protocol Buffers 使用笔记

Protocol Buffers 使用笔记created: 2024-03-04T11:11+08:00 modified: 2024-11-26T15:28+08:00 published: 2024-12-25T15:30+08:00 categories: applicationsProtocol Buffers 简称 protobuf 或者 PB,要解决的问题是这样的: 在互联网上传输大量数据,如果使用 json 等类似格…

域名解析平台有哪些

在互联网的广袤世界中,域名解析平台起着至关重要的作用,它们就像是互联网的 “导航仪”,将人们易于记忆的域名转换为计算机能够理解的 IP 地址,从而确保我们能够顺利访问各类网站和在线服务。域名解析的过程就是将域名翻译为对应的 IP 地址,使得浏览器能够准确地找到服务器…

Pycharm2024.3完整的安装教程(附激活,常见问题处理)

卸载老版本 Pycharm 首先,如果小伙伴的电脑上有安装老版本的Pycharm , 需要将其彻底卸载掉,如下所示(没有安装则不用管,直接安装即可): TIP:如果你之前使用过本站提供的 激活到 2025 年版本脚本,需要执行对应卸载脚本 /适用2024版本/JetBrains 2023 最新全家桶/jetbra /…

搭建npm私有仓库——verdaccio

前言Verdaccio 是一个简单的、零配置要求的本地私有 npm 注册表。无需整个数据库即可开始!Verdaccio 开箱即用,带有自己的小型数据库,并且能够代理其他注册表(例如 npmjs.org),并在此过程中缓存下载的模块。对于那些希望扩展其存储功能的人,Verdaccio 支持各种社区制作的…

门店协作的未来:协作文档如何提升客户体验?

汽车销售是一种高竞争、高需求精细化管理的业务形态。门店销售团队不仅需要对接客户,还要实时反馈总部的策略与数据。如果销售流程中协同效率不足,往往会导致商机流失和客户满意度下降。协作文档工具的普及,为车企门店带来了全新解决方案。 车企门店销售面临的核心问题 在车…

功率器件的热设计基础(二)——热阻的串联和并联

功率半导体热设计是实现IGBT、碳化硅SiC高功率密度的基础,只有掌握功率半导体的热设计基础知识,才能完成精确热设计,提高功率器件的利用率,降低系统成本,并保证系统的可靠性。/ 前言 / 功率半导体热设计是实现IGBT、碳化硅SiC高功率密度的基础,只有掌握功率半导体的热设计…

视频分析设备平台EasyCVR关于未来监控系统可能会集成哪些新技术?

随着科技的飞速发展,监控系统正经历着一场革命性的变革。未来的监控系统将不再是单一的观察和记录工具,而是集成了多种前沿技术的智能平台,它们将极大地提高安全性、效率和响应速度。以下是未来监控系统可能集成的一些关键技术。1、人工智能技术 1)监控系统将越来越多地应用…

【亲测能用】专业音乐制作软件Ableton Live Suite v12.1.5 中文版(附安装教程)

软件介绍 在数字音频工作站(DAW)的领域中,Ableton Live以其创新和灵活性脱颖而出,成为全球音乐家和制作人的首选工具。由德国Ableton公司精心打造,这款软件不仅支持无缝的音乐播放和即时编辑,还提供了强大的音频效果和虚拟乐器,让音乐创作变得无限可能。 功能亮点 Ablet…

【测试侧】产品场景用例模板

产品的场景法用例设计的测试场景用例模板

宝藏推荐!J 人电商零售圣诞忙,哪 6 款办公软件能提升工作学习效能?

圣诞节的钟声敲响,电商零售行业瞬间陷入紧张而激烈的竞争漩涡。对于 J 人特质主导的电商团队而言,这不仅是一场销售大战,更是对团队协作与个人能力的严峻考验。在这关键时期,高效的办公软件犹如得力助手,能够帮助团队优化工作流程、提升沟通效率,实现工作与学习的双丰收。…

源码编译geoserver(idea)

官方教程:https://docs.geoserver.org/main/en/developer/quickstart/intellij.html从 git 存储库中检出源代码:git clone https://github.com/geoserver/geoserver.git geoserver列出可用的分支:% git branch2.21.x2.22.x* main选择main最新动态:% git checkout main或者为…