gpt4 book ai didi

java - Java 新手——返回单元测试失败

转载 作者:行者123 更新时间:2023-12-01 21:19:11 24 4
gpt4 key购买 nike

我正在类里面编写 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() 返回删除空格后的字符数,但我可能是错的。

任何帮助/指导将不胜感激。

最佳答案

您的假设是正确的,问题是您将 text 替换为 stripped text:

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

...现在 getNumOfCharacters() 返回剥离长度,它不再是例如46.

也就是说,当您在 main 中点击此行时:

String modifiedstring = outputWithoutWhitespace();

它具有替换 text 的副作用,因为这正是您告诉 outputWithoutWhitespace() 要做的事情。因此,当 main 结束时,text 现在包含修改后的文本,并且对 getNumOfCharacters() 的后续调用无法通过单元测试。

您的打印输出具有误导性(仍然打印“46”),因为您在 outputWithoutWhitespace()< 中弄乱 text 之前计算并存储了字符数/.

这是关于如何处理和管理数据的一个很好的练习,对您来说也是一次很好的学习体验。这也很好地展示了单元测试在质量控制中的值(value);你应该记住这个教训。

这里有一个提示:根据您的应用程序要求,outputWithoutWhitespace()真的需要存储修剪后的文本吗?还是只需要返回即可?

将来,为了调试,请考虑:

  • 尽可能在调试器中单步执行,以检查一路上发生的情况。
  • 添加诊断打印输出,例如,在 getNumOfCharacters() 中打印 text 的值,以验证它是否是您认为的那样。特别是考虑到您假设问题就在这里并且单元测试失败,这将是开始调查的好地方。

关于java - Java 新手——返回单元测试失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39439574/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com