1. 程式人生 > >第四周小組作業

第四周小組作業

獨立 todo println 原型 AD append() 成員 測試 編寫

基本任務

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

第四周小組作業