2016-09-11 7 views
0

私は、クラスと私のJavaプログラムで作業していますが、プログラムが実行されたときに正しいプリントアウトを得ることができない理由を、ここでNew to 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

ヒント:詳細については、外部サイトへのリンクを避けてください。そして、関連するコードだけを投稿してください。意味:ここでmainメソッドを貼り付けるのではなく、代わりに失敗した単体テストのソースコードを投稿する方がよいでしょう。言い換えれば、ヘルプセンターを見て、「尋ねる方法」を読んでください。 – GhostCat

+1

あなたのメソッド名は間違っていますか?テストで** GetNumOfCharacters **(大文字G) –

+0

@GhostCat新しいユーザーは、10人の担当者までイメージをインライン化できません。あなたは編集によってそれらを助けることができるし、助けるべきです。ここで問題を見るのに十分な情報があり、プログラム自体は一見して理解するのに十分な程度です。これは、私たちが常に人々に求めている情報のすべてを正確に示した、かなり明確な質問です。 –

答えて

3

あなたの仮定が正しいか、問題はあなたがtextを取り除いてtextを交換していることである。

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

を...そして今getNumOfCharacters()は、例えば、もはや剥奪長さを、返却されますそれはtextを置き換えるの副作用があり

String modifiedstring = outputWithoutWhitespace(); 

それはあなたがするoutputWithoutWhitespace()に語った正確に何があるため、:あなたはmainでこの行を打ったとき、ある46

。したがって、mainが終了するまでには、textに変更されたテキストが含まれ、getNumOfCharacters()を呼び出すとユニットテストに失敗します。あなたが台無しoutputWithoutWhitespace()textを前に計算し、文字カウントを保存するため

あなたの印刷出力が(まだ版画「46」)誤解されます。

これは、データの処理と管理の仕方や、優れた学習体験の練習に役立ちます。また、品質管理における単体テストの価値についての素敵なデモンストレーションです。このレッスンを覚えておく必要があります。

ここにヒントがあります:アプリケーションの要件に基づき、outputWithoutWhitespace()本当ににトリミングテキストを必要とするのか?それともそれを返す必要はありますか?将来的には

は、デバッグのために、考慮してください。

可能な方法に沿って何が起こっているかを調べるために、デバッガでステップスルー
  • たとえば、textという値をgetNumOfCharacters()に出力して、それがあなたの考えであることを確認します。特に問題がここにあり、ユニットテストが失敗したと仮定した場合、これは調査を開始するのに適しています。
+0

ありがとうございました! Jason Cと@ cricket_007が言ったことのコンボかもしれないと思う。私はそれを取り除き、GetNumOfCharacters()だけを強制的にテストしようとしましたが、まだテストに合格できませんでした。私はそれを解決すると私はここに戻ります! ご協力いただきありがとうございます。 – bballard1337

関連する問題