2012-02-27 106 views
-3

我在理解普通的一段java代碼和通過JUnit測試的代碼之間的區別時遇到了問題。在我的代碼和JUNIT測試中遇到問題

我在過去的4周裏每週都會爲學校寫過評論,而且我已經得到了0/100(自動標記),但是TA對我很好,給了我一些標誌着接近正確的答案。

本週我有同樣的事情..我有一個代碼,我認爲是正確的,並遵循作業說明。

你能幫我以某種方式「轉換」我的代碼,以便通過JUnit測試嗎?

謝謝..這裏是我的代碼應該做的:

所需的(公共)方法的描述:

/* ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * **

  • @參數字符串表示的inputPath本地文件系統路徑
  • 到輸入文件
  • @Returns包含字處理>計數映射 *
  • 一個HashMap 10
  • 此方法必須讀取文件(由inputFilePath標識)的內容,同時
  • 一個字符,查找文件中的作者,並保持作者的跟蹤
  • 計數的java.util.HashMap中。
    • 的作者定義爲出現
  • 的「」和「」標籤其自身內部出現「」和「」標籤之間
  • 字符的連續序列。
  • ''是一個開始標籤,和''對應的結束標籤。同樣,
  • ''是一個開始標籤,和''其對應的結束標籤。*
  • 與HW4一樣,您必須使用狀態轉換圖來識別這些標籤,並在它們之間的文本識別這些問題的解決方案
  • 。 *
  • 您還必須準備繪製一張合適的狀態轉換圖,以便於下週的寫作。
    • 您只能使用CharacterFromFileReader從輸入
  • 文件讀取字符。 * * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * **/

,這裏是我的代碼:

public class Temp { 

    @Test public void temp(String path) { 

     CharacterFromFileReader reader = new CharacterFromFileReader(path); 
     HashMap<String, Integer> map = new HashMap<String, Integer>(); 

     int authorCount = 0; 
     int state = 0; 
     String s = ""; 

     for (int i=0; i<s.length(); i++) { 
      while (reader.hasNext()) { 
       char c = s.charAt(i); 
       switch (state) { 

       case 1: 
        if (c == '<') { 
         state = 2; 
        } 
        break; 

       case 2: 
        if (c == 'D') { 
         state = 3; 
        } else {state = 1;} 
        break; 

       case 3: 
        if (c == '>') { 
         state = 4; 
        } else {state = 1;} 
        break; 

       case 4: 
        if (c == '<') { 
         state = 5; 
        } else {state = 4;} 
        break; 

       case 5: 
        if (c == 'A') { 
         state = 6; 
        } else {state = 4;} 
        break; 

       case 6: 
        if (c == '>') { 
         state = 7; 
        } else {state = 4;} 
        break; 

       case 7: 
        if (c != '<') { 
         s += c; 
        } else if (c == '<') { 
         state = 8; 
        } else {state = 7;} 
        break; 

       case 8: 
        if (c == 'a') { 
         state = 9; 
        } else {state = 7;} 
        break; 

       case 9: 
        if (c == '>') { 
         state = 10; 
         authorCount++; 
         map.put(s, authorCount); 
        } else {state = 7;} 
        break; 

       case 10: 
        if (c == '<') { 
         state = 11; 
        } 
        break; 

       case 11: 
        if (c == 'A') { 
         state = 5; 
        } else if (c == 'd') { 
         state = 12; 
        } else {state = 10;} 
        break; 

       case 12: 
        if (c == '>') { 
         System.out.println(map); 
        } 
        break; 

       } 
      } 
     } 
    } 
} 
+0

你可以發佈你的作業問題嗎?所以我們知道這個源代碼試圖做什麼。然後我們可以看看它,並給你更多的信息。 – Halfwarr 2012-02-27 02:16:40

+0

或者提供JUnit測試用例(如果有的話)...我假設您的代碼應該由您的老師給出的測試用例調用。 – NightWolf 2012-02-27 02:39:29

回答

1

JUnit是隻是用於測試的工具是一個程序做什麼它應該做的。例如,它可用於調用方法並檢查它是否返回期望值。程序是否通過測試完全取決於測試寫入的內容。

這聽起來像你的助教使用JUnit來評分你的家庭作業課程。如果你的代碼沒有通過測試,那意味着它沒有做測試期望的事情。爲了解決這個問題,你需要知道測試期望的結​​果。與您的TA談談哪些JUnit測試失敗;這應該會幫助你理解你的代碼做錯了什麼。

順便說一句,將@Test註釋放在你的方法上不會有幫助。該註釋說你的代碼的一個JUnit測試。它與測試 JUnit測試無關。