我這次用構造單詞樹的形式進行詞頻統計,此次的任務是對已有的程式進行單元測試。選用的工具是junit。它是基於測試驅動開發(tdd)原理的。
此次詞頻統計的主體思想是,每次讀入文章中的128(自己設定)個字元(目的是防止溢位),將這些字元儲存到一顆樹中,樹中的節點有乙個儲存詞頻的變數和乙個指向子節點的陣列(類似於c語言中的指標)。最後遍歷整棵樹,按照詞頻進行排序。
下面是我的片段**
下面這段**是定義的節點的結構
class下面這段**是全域性變數的宣告,因為涉及到建樹時都是從根節點開始生成,所以根節點定義為全域性變數chartreenode
//下面這段**實現的是對每個輸入的字串進行樹的構造,最後返回的是樹的根。設定為全域性變數,每讀入一行,在原來生成的樹的基礎上繼續生成子節點
public
static chartreenode root=new
chartreenode();
public
static chartreenode p=root;
private
static filereader reader=null
;
private
static bufferedreader buffer=null
;
private scanner scan;
/*下面這段**用方法過載的形式遍歷整棵樹,然後將遍歷到的單詞儲存在list* 生成單詞樹
* */public
static
chartreenode generatechartree(string text)
if (c >= 'a' && c <= 'z')
p = p.children[c - 'a'];
} else
}if (c >= 'a' && c <= 'z')
p.count++;
return
root;
}
/*下面這段**是對不同路徑構造的樹數進行單詞的排序和輸出* 遍歷整棵樹,將遍歷得到的每個單詞存到list中
* */public
static
void searchtree(listlist, chartreenode node, char buffer, int
len)
searchtree(list, node.children[i], buffer, len + 1); //
遞迴呼叫,每次以上乙個葉節點作為下次遞迴的頭結點
} }
}/** searchtree()為過載的方法
* */public
static
void searchtree(listlist, chartreenode node)
/*下面進入此次的重頭戲:單元測試。引入junit後在每個測試的方法前加上@test,選中方法名即可測試* 對文章用generatechartree()函式生成單詞樹,在對生成的單詞樹進行排序並且輸出
*/public
static
void sortandoutput(string filepath) throws
ioexception
lastword = ""; //
清空上一輪lastword的內容
if (character.isletter(c[len - 1]))
}root =generatechartree(temp);
}list
list = new arraylist();
searchtree(list, root);
//對生成的單詞樹按照單詞的次數逆向排序排序
collections.sort(list, new comparator()
});buffer.close();
reader.close();
root=new chartreenode(); //
但對於輸入的是目錄時,對每篇文章建立的樹統計完後,應當初始化這棵樹,便於下篇文章建樹
system.out.println("單詞\t數量");
for (int i = 0; i < 5; i++)
}
下面這段**是對輸入目標的檔案的路徑進行該檔案的詞頻統計
@test結果截圖如下public
void testinputfilepath() throws
ioexception
}
下圖當輸入的檔名找不到時
下面這段**是對輸入目標檔案的檔名進行該檔案的詞頻統計
@test結果截圖如下public
void testinputfilename() throws
ioexception
下面這段**是對輸入目標檔案所在的目錄名,進行該檔案的詞頻統計
@test結果截圖如下public
void testinputdirectorypath() throws
ioexception }}
下面這段**測試重定向輸入
@test結果如下public
void redirectinputbyconsole() throws
ioexception
out.close();
buffer.close();
reader.close();
sortandoutput(targetfile);}}
測試後的感受:
詞頻統計 單元測試
我自己的單元測試沒有弄出來,我用c編的,在visual studio中貌似實現不了單元測試,而李俞寰同學是用c 編寫的詞頻統計,在vs2015中實現單元測試無比的方便,所以我請教了他並借鑑了一下.testmethod public void dictionarysorttest list expec...
單元測試 單元測試文章收藏
前言 前段時間公司計畫做自動化測試,自己也打算圍繞幾個點做相關調研,現在想想呢?其實對自動化測試的概念都還不是十分清晰,當時主要還是圍繞 單元測試 向qa小夥伴學習了一段時間,現由於公司重組,學習中斷,這裡簡單記錄一些單元測試好文,留待後續參考.什麼叫自動化測試?自動化測試覆蓋率?覆蓋率如何做到的?...
單元測試之Django單元測試
每個應用,自帶tests.py 整合在django的專案檔案裡,更多是開發人員寫django自動的測試執行 3.1 前後置方法執行特點 django.test.testcase類主要由前 後置處理方法和test開頭的方法組成 特點 繼承於django.test.testcase 測試用例都是test...