基本任务
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、小组贡献
我在小组项目中主要以学习为主,听从组长的分配完成自己的任务,所以评价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作为检查工具,检测后发现,自己在测试函数中存在创建了多余的实例的代码。
4、改正
思考了一下,因为方法是静态方法,直接使用 类名.方法名() 就可以调用方法,更改后如下图:
项目总结
上一次还只能模仿别人代码完成作业,这一次是一点点学习java来独立完成分配的功能,非常有成就感,但是由于函数比较简单没有判断分支,所以编写测试用例只想到8个,离20个还差很远,组长提示我可以去检查效率还有一些偏门的异常,但由于基础还不扎实,暂时做不出来,希望在后续的项目能学到更多!