2015-04-24 實踐作業2

洞拐洞拐發表於2015-04-30

一、題目簡介  

  寫一個程式,計算出一組文字文件的英文單詞的頻率。

  練習的能力:

  迴歸測試,單元測試,效能分析,效能優化等基本原始碼控制技能

二、原始碼的github連結

  https://github.com/WreckBear/2ndHomeWork

三、所設計的模組測試用例、測試結果截圖

   本實現有三個方法,分別對三個方法做了測試:

  對獲取檔案中的字串方法做的三項測試:

 1     @Test
 2     public void tsetNullFile() throws IOException{
 3         File file =null;
 4         DoSomething dos = new DoSomething();
 5         String result = dos.getString(file);
 6         assertNull(result);
 7     }
 8     
 9     @Test
10     public void testNoContentFile() throws IOException {
11         File file =new File("D:/Empty.txt");
12         DoSomething dos = new DoSomething();
13         String result = dos.getString(file);
14         assertEquals("",result);
15     }
16     
17     @Test
18     public void testNormalFile() throws IOException {
19         File file =new File("D:/Normal.txt");
20         DoSomething dos = new DoSomething();
21         String result = dos.getString(file);
22         assertEquals("hello,my name is Matin,I am thirty-three years old.",result);
23     }
 對提取單詞的方法做了如下測試:
 1     @Test
 2     public void testTakeWord() throws IOException {
 3         File file =new File("D:/Normal.txt");
 4         DoSomething dos = new DoSomething();
 5         String str = dos.getString(file);
 6         List<String> result = dos.takeWord(str);
 7         for(String show:result){
 8             System.out.print(show);
 9         }
10     }    

  該測試列印結果為:hello my name is Matin I am thirty three years old 

 對計算單詞頻率做了如下測試:

 1     @Test
 2     public void testFrequency() {
 3         List<String> list = new ArrayList<String>();
 4         list.add("hello");
 5         list.add("hello");
 6         list.add("bye");
 7         list.add("bye");
 8         list.add("hello");
 9         list.add("queue");
10         list.add("hello");
11         
12         DoSomething dos = new DoSomething();
13         HashMap map = dos.getFrequency(list);
14         
15         Iterator iter = map.entrySet().iterator();
16         while (iter.hasNext()) {
17             Map.Entry entry = (Map.Entry) iter.next();
18             String key = (String) entry.getKey();
19             int val = (Integer) entry.getValue();
20             System.out.println(key+":"+val);
21         }
22     }

  該測試列印結果:

  hello:4

      queue:1

  bye:2

  測試結果截圖:

  

四、問題及解決方案、心得體會

  問題:

    從文章中獲取單詞的方法不完善,比如若文章中出現連續的非字元,可能獲取單詞就會被截止,該方法在繼續完善。

  心得體會:

    雖然這次作業難度不大,不復雜,體會不出明顯的測試所帶來的效果,但也能清楚的感受到Junit給測試帶來的便捷性,感嘆Junit的簡單之中的神奇。

   另外這次的測試作業也讓自己測試有了個不同的理解,再也不是簡單的寫個mian方法測試一下,而是跟全面的去方法安全性和健壯性進行檢測,不可不謂收貨。

  

相關文章