第四周小組作業
基本任務
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個還差很遠,組長提示我可以去檢查效率還有一些偏門的異常,但由於基礎還不紮實,暫時做不出來,希望在後續的項目能學到更多!
第四周小組作業