詞頻統計單元測試

2022-04-10 01:01:28 字數 3293 閱讀 8536

我這次用構造單詞樹的形式進行詞頻統計,此次的任務是對已有的程式進行單元測試。選用的工具是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;

下面這段**實現的是對每個輸入的字串進行樹的構造,最後返回的是樹的根。

/*

* 生成單詞樹

* */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

/*

* 遍歷整棵樹,將遍歷得到的每個單詞存到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)

下面這段**是對不同路徑構造的樹數進行單詞的排序和輸出

/*

* 對文章用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++)

}

下面進入此次的重頭戲:單元測試。引入junit後在每個測試的方法前加上@test,選中方法名即可測試

下面這段**是對輸入目標的檔案的路徑進行該檔案的詞頻統計

@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...