第四周小组作业

基本任务

1、小组Github

我们小组成员:袁寅申(组长)、胡聪、何啸轩、王思哲

github地址:https://github.com/YinshenYuan/wcPro

2、PSP表格

3、接口实现

在项目中我负责输入模块的实现,组长给到我函数原型是:

public static String getContent(String inFilePath)
{
    String content = null;
    // TODO read the file content from inFilePath
}

我的设计思路是通过Java的FileReader读取对应路径下的文件,然后用BufferedReader来缓冲文本字节信息,接着用StringBuilder的append()函数去接收,最后通过.toString()返回文本信息。

代码如下:

    BufferedReader bufReader = new BufferedReader(new FileReader(inFilePath));     //BufferedReader can get char from char stream.

    int read;    //To get value of reader.read().
    while((read = bufReader.read()) != -1)
    {
        stringBuilder.append((char)read);    //Get char one by one.
    }

    content = stringBuilder.toString();    //Convert char stream to String.

    bufReader.close();

    return content;

其中用try{}将以上代码括住,当找不到系统文件或者其他IO问题时,通过catch{}抛出错误信息。

4、测试用例设计

我着眼于输入内容是否能够正常读取,设计了7个测试用例:

public void EnglishTest()    //测试英文字母能否正确读取
public void CharacterTest()    //测试特殊字符能否正确读取
public void NumberTest()    //测试数字能否正确读取
public void LineBreakTest()    //测试换行符能否正确读取
public void BlankTest()    //测试空格符能否正确读取
public void NoCharacterTest()    //测试文件内无字符时能否正确读取

public void NoFileTest()    //测试路径格式输入正确但文件不存在时是否报错

测试方法采用org.junit.Assert.assertEquals()方法,通过预设输出String expect与getContent()得到的内容比对,来判断方法是否返回正确的值。

5、测试结果如图:

(对文件不存在时的报错)

因为函数较简单,我只检测了各式输入类型以及文件不存在时的测试,对于其他异常情况不懂如何测试,比如我想试验函数读取大文件,但是由于对JUnit的使用陌生,并不会使用对应方法。测试质量应该只包含了正确输入的情况。

6、小组贡献

我在小组项目中主要以学习为主,听从组长的分配完成自己的任务,所以评价中等吧。

拓展任务

1、代码规范

阅读了《阿里巴巴 Java 开发手册》,学到了很多,之前搞不懂的就乱来的一些行为也得到了规范,比如命名规则,类名采用 UpperCamelCase ,而方法名、参数名、成员变量、局部变量都统一使用 lowerCamelCase 风格,这个规范到我的代码命名,还有例如使用4空格来注释而不是tab,以及不要为了缩写牺牲了语义的设置变量名。

2、代码评价

对组员胡聪的代码评价:功能没问题,在命名变量和一些细节方面做的不够好!

String a = "";

这种命名方式只有自己知道什么意思,一定要避免,根据功能设置变量名!

catch (IOException e)
{
    System.err.println("Failure to create a text!");
    return false;
}       

这里要把IOException e变量输出出来,以方便定位问题!

3、静态测试

小组采用 FindBugs Eclipse plugin作为检查工具,检测后发现,自己在测试函数中存在创建了多余的实例的代码。

4、改正

思考了一下,因为方法是静态方法,直接使用 类名.方法名() 就可以调用方法,更改后如下图:

项目总结

上一次还只能模仿别人代码完成作业,这一次是一点点学习java来独立完成分配的功能,非常有成就感,但是由于函数比较简单没有判断分支,所以编写测试用例只想到8个,离20个还差很远,组长提示我可以去检查效率还有一些偏门的异常,但由于基础还不扎实,暂时做不出来,希望在后续的项目能学到更多!

原文地址:https://www.cnblogs.com/bruskiii/p/8733894.html

时间: 2024-10-04 12:25:32

第四周小组作业的相关文章

第四周小组作业wcPro

第四周小组作业wcPro 1  基本任务:代码编写+单元测试 1.1 小组github地址 github.com/Asfalas/wcPro 1.2 PSP表格 PSP2.1 PSP阶段 预估耗时(分钟) 实际耗时(分钟) Planning 计划 30 60 Estimate 估计任务需要多少时间 30 60 Development 开发 180 230 Analysis 需求分析 20 10 Design Spec 生成设计文档 20 20 Design Review 设计复审 20 20 C

第四周小组作业:WordCount优化

Github地址: https://github.com/skz12345/wcPro PSP表格: PSP PSP阶段 预估耗时(分钟) 实际耗时(分钟) Planning 计划 10 5 Estimate 估计这个任务需要多少时间 10 5 Development 开发 60 50 Analysis 需求分析(包括学习新技术) 5 5 Design Spec 生成设计文档 5 5 Design Review 设计复审(和同事审核文档) 5 5 Coding Standard 代码规范(为目前

第四周WordCount小组作业

一.基础功能 小组github地址:https://github.com/kawoyi/Advanced-WordCounter PSP表格: 接口的实现: 我实现的是单词的统计模块,由Counter类完成,其中最主要的功能是由analyse()函数完成功能是将分割出单词并且加入map中供输出结果 public void analyse()//主要功能实现 { strToken = ""; // 置strToken为空串 while (i < buffer.length()) {

第四周作业

第四周作业 1.复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限. (1)复制/etc/skel目录为/home/tuser1 [[email protected] ~]# cp -r /etc/skel/ /home [[email protected] ~]# mv /home/skel /home/tuser1 [[email protected] ~]# ll -a /home/tuser1/ total 2

#51CTO学院四周年#详解JWT的结构与应用

1. JWT是什么? JWT,全称JSON WEB TOKEN, 是WEB客户端与服务器之间相互进行安全通信的规范.通信双方的对象本身通过JSON传递数据是不安全的,但是由于有了数字签名的存在,这些信息变的可信的. 2. JWT特点 简洁(Compact): 可以通过URL,POST参数或者在HTTP header发送,因为数据量小,传输速度也很快 自包含(Self-contained):负载中包含了所有用户所需要的信息,避免了多次查询数据库 3. JWT的应用场景 身份认证:当用户在客户端完成

51CTO四周年——米的感悟

不知不觉,我已经来到这里一年多了,2016年4月4号,我偶然发现了这个网站,当时刚学完思科的四门基础课程,对网络很感兴趣,想要一直从事这个行业,于是我找到老师,说明了自己的想法,老师鼓励我去考CCNA认证,我觉得是一个很好的锻炼机会和学习机会,就四下寻找资源. 在找到这个网站,准确的说,是找到晁海江老师的课程之后,我内心狂喜,仔细研究了一遍课程大纲后,试听下来,觉得晁老师讲的很不错,我也喜欢听他的声音,所以就购买了全套课程.从那以后,我冲着考CCNA这个目标,十分刻苦努力地学习起来,每一天都有期

第十四周学习进度

时间 十四周 学习时间 78小时 代码量 1623行 所学知识 临近期末,学习任务越来越重,用在专业技术学习上的时间相对减少了很多.不过这周还是有些收获的.首先是数据结构作业的完成,我头一次使用Qt写了一个图形界面.以前我学习Qt是总觉得它晦涩难懂,但是这次我只是看了看学习视频,觉得容易多了.虽然当下图形界面不是很热门,但是学了两年的计算机,连一个图形界面都写不出来还是很尴尬的,所以以后若是有时间还是应该好好学学.

20140256985《嵌入式程序设计》第三、四周学习总结

1.第三四周学习情况 上课能跟上,而且新的虚拟机非常好使,编辑代码的时候很是方便,没有上一个虚拟机那么复杂,非常好用! 2实验楼学习内容    (1).安装并解压arm-linux-gcc交叉编译工具 (2).测试arm-linux-gcc是否可运行 (3).解决64位系统下安装32位软件的问题和 (4).将arm-linxu-gcc加入环境变量PATH中 (5).bootboader的配置,移植和编译 解压文件 建立板级支持包 修改eduk2410文件 修改Makefile文件 编译U-Boo

每周学习进度--第四周

  第四周 所花时间(包括上课) 270min 代码量 324 博客量 1 了解到的知识点 Java编写简单工厂模式和工厂方法模式