簡體   English   中英

Java的新手-返回單元測試失敗

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM