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