2016-09-11 79 views
0

我正在从事类中的Java程序工作,并且我不确定为什么或者如何失败,因为我在程序运行时得到正确的打印输出。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()正在返回的字符数之后的空白字符已被删除,但我可能是错的。

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

+4

提示:避免链接到外部网站获取更多信息。并且:只发布相关代码。含义:不是在这里粘贴主要方法,而是更好地发布失败单元测试的源代码。换句话说:请转到帮助中心,阅读“如何问”。 – GhostCat

+1

您的方法名称错误?测试说** GetNumOfCharacters **(大写G) –

+0

@GhostCat新用户不能内嵌图像,直到他们有10个代表。你可以也应该通过编辑来帮助他们。这里有足够的信息来看待这个问题,而且程序本身足够小以便一目了然。这是一个非常明确的问题,我们经常问人们的所有信息。 –

回答

3

你的假设是正确的,问题是,你与更换text剥离text

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

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

也就是说,当你打这一行main

String modifiedstring = outputWithoutWhitespace(); 

它取代text的副作用,因为这正是你告诉outputWithoutWhitespace()做。因此,到main结束时,text现在包含修改后的文本,并且随后调用getNumOfCharacters()未通过单元测试。因为你计算和之前你陷入困境中outputWithoutWhitespace()text存储字符数

您的打印输出是误导(仍然打印“46”)。

这是如何处理和管理数据以及为您提供良好学习体验的良好练习。这也是质量控制中单元测试价值的一个很好的例子。你应该记住这一课。

这里有一个提示:根据您的应用需求,确实outputWithoutWhitespace()真的需要修剪文字?或者它只是需要返回它?

在未来,调试,考虑:

  • 步进通过在调试器哪里可以检查什么沿途发生。
  • 例如,添加诊断打印输出,在getNumOfCharacters()中打印text的值以验证它是您的想法。特别是考虑到你认为问题出现在这里和单元测试失败的假设,这将是一个开始调查的好地方。
+0

谢谢大家!我想这可能是Jason C和@ cricket_007所说的组合。我将其剥离并尝试强制测试GetNumOfCharacters(),但仍无法通过测试。我现在要休息并继续前进,但如果我找出解决方案,我会停下来。 谢谢您的帮助! – bballard1337