第四周小组作业

基本任务

1、小组Github

我们小组成员:袁寅申(组长)、胡聪、何啸轩、王思哲
github地址:https://github.com/YinshenYuan/wcPro

2、PSP表格

1341774-20180407171313979-1167702446.png

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()得到的内容比对,来判断方法是否返回正确的值。
1341774-20180407192021842-1646442900.png

5、测试结果如图:

1341774-20180407190917800-1715342002.png

1341774-20180407190925020-639647789.png
(对文件不存在时的报错)

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

6、小组贡献

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

拓展任务

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作为检查工具,检测后发现,自己在测试函数中存在创建了多余的实例的代码。
1341774-20180407191631502-599919596.png

4、改正

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

项目总结

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

转载于:https://www.cnblogs.com/bruskiii/p/8733894.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值