2016-09-11 107 views
0

我正在從事類中的Java程序工作,並且我不確定爲什麼或者如何失敗,因爲我在程序運行時得到正確的打印輸出。Java的新功能 - 返回單元測試失敗

這裏是我的代碼:

import java.util.Scanner; 

public class TextAnalyzer { 

    // Create scanner 

    private static Scanner scnr = new Scanner(System.in); 
    // Create text string 
    private static String text; 

    public static void main(String[] args) { 
     System.out.println("Enter a sentence or phrase: "); 
     // Scan for text input 
     text = scnr.nextLine(); 

     System.out.println("You entered: " + text); 

     // Call getNumOfCharacters 
     int count = getNumOfCharacters(); 
     System.out.println(); 
     System.out.println("Number of characters: " + count); 
     // Call outputWithoutWhitespace 
     String modifiedstring = outputWithoutWhitespace(); 
     System.out.println("String with no whitespace: " + modifiedstring); 

    } 

    // Method outputs string without spaces 

    private static String outputWithoutWhitespace() { 
     text = text.trim().replaceAll(" ", ""); 
     return text; 
    } 

    // Method to return number of characters 

    private static int getNumOfCharacters() { 
     return text.length(); 
    } 
} 

的輸出經過各級,它是在輸入字符失敗的數量進行單元測試,我真的只是需要一些指導新學生到Java編程。

下面是測試的打印:

enter image description here

我的假設是,getNumOfCharacters()正在返回的字符數之後的空白字符已被刪除,但我可能是錯的。

任何幫助/指導將不勝感激。

+4

提示:避免鏈接到外部網站獲取更多信息。並且:只發布相關代碼。含義:不是在這裏粘貼主要方法,而是更好地發佈失敗單元測試的源代碼。換句話說:請轉到幫助中心,閱讀「如何問」。 – GhostCat

+1

您的方法名稱錯誤?測試說** GetNumOfCharacters **(大寫G) –

+0

@GhostCat新用戶不能內嵌圖像,直到他們有10個代表。你可以也應該通過編輯來幫助他們。這裏有足夠的信息來看待這個問題,而且程序本身足夠小以便一目瞭然。這是一個非常明確的問題,我們經常問人們的所有信息。 –

回答

3

你的假設是正確的,問題是,你與更換text剝離text

private static String outputWithoutWhitespace() { 
    text = text.trim().replaceAll(" ", ""); 
    return text; 
} 

...現在getNumOfCharacters()被返回剝離長度,這不再是如46.

也就是說,當你打這一行main

String modifiedstring = outputWithoutWhitespace(); 

它取代text的副作用,因爲這正是你告訴outputWithoutWhitespace()做。因此,到main結束時,text現在包含修改後的文本,並且隨後調用getNumOfCharacters()未通過單元測試。因爲你計算和之前你陷入困境中outputWithoutWhitespace()text存儲字符數

您的打印輸出是誤導(仍然打印「46」)。

這是如何處理和管理數據以及爲您提供良好學習體驗的良好練習。這也是質量控制中單元測試價值的一個很好的例子。你應該記住這一課。

這裏有一個提示:根據您的應用需求,確實outputWithoutWhitespace()真的需要修剪文字?或者它只是需要返回它?

在未來,調試,考慮:

  • 步進通過在調試器哪裏可以檢查什麼沿途發生。
  • 例如,添加診斷打印輸出,在getNumOfCharacters()中打印text的值以驗證它是您的想法。特別是考慮到你認爲問題出現在這裏和單元測試失敗的假設,這將是一個開始調查的好地方。
+0

謝謝大家!我想這可能是Jason C和@ cricket_007所說的組合。我將其剝離並嘗試強制測試GetNumOfCharacters(),但仍無法通過測試。我現在要休息並繼續前進,但如果我找出解決方案,我會停下來。 謝謝您的幫助! – bballard1337