繁体   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