[英]New to Java — Return Unit test failing
我正在課堂上研究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編程的新學員,我真的只需要一些指導。
這是測試的打印輸出:
我的假設是,在刪除空格后, getNumOfCharacters()
返回的字符數是多少,但我可能是錯的。
任何幫助/指導將不勝感激。
你的假設是正確的,問題是要替換text
與剝離 text
:
private static String outputWithoutWhitespace() {
text = text.trim().replaceAll(" ", "");
return text;
}
...,現在getNumOfCharacters()
返回的剝離長度不再是例如46。
也就是說,當您在main
點擊此行時:
String modifiedstring = outputWithoutWhitespace();
它具有替換text
的副作用,因為這正是您告訴outputWithoutWhitespace()
要做的。 因此,到main
結束時, text
現在包含已修改的文本,並且隨后對getNumOfCharacters()
調用getNumOfCharacters()
通過單元測試。
您的打印輸出具有誤導性(仍打印“ 46”),因為在將text
弄亂到outputWithoutWhitespace()
之前,您已經計算並存儲了字符數。
這是有關如何處理和管理數據的良好練習,並且對您來說是一種良好的學習體驗。 這也很好地證明了單元測試在質量控制中的價值。 您應該記住這一課。
提示:根據您的應用程序要求, outputWithoutWhitespace()
真的需要存儲修剪后的文本? 還是只需要退貨?
將來,為了進行調試,請考慮:
getNumOfCharacters()
打印text
的值,以驗證它是否與您想的一樣。 尤其是假設您認為問題出在這里並且單元測試失敗,那么這將是開始調查的好地方。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.