2011-12-16 12 views
0

私のクラスでは、メインメソッドでコードを記述してテストしなければならないと言われましたが、書きましたが、テストする方法はわかりません。メソッドをテストする方法は?私は、私は、これは宿題だと思いますのでなど私はJavaをテストする必要があります

import java.util.Scanner; 

public class Word 
{ 
    public static void main(String[] args) 
    { 

    } 

    public String word; 

    public void Word() 
    { 
     String word = ""; 
    } 

    public void Word(String word1) 
    { 
     String word = word1; 
    } 

    public String getWord() 
    { 
     return word; 
    } 

    public void setWord(String newWord) 
    { 
     String word = newWord; 
    } 

    public void getFirstLetter() 
    { 
     String firstLetter = word.substring(0, 1); 
    } 

    public void getLastLetter() 
    { 
     String lastLetter = word.substring(word.length() - 1, word.length()); 
    } 

    public void removeFirstLetter() 
    { 
     String noFirstLetter = word.substring(1, word.length()); 
    } 

    public void removeLastLetter() 
    { 
     String noLastLetter = word.substring(0, word.length() - 1); 
    } 
    public int findLetter (String parameter) 
    { 
     word.indexOf(parameter); 
     return 1; 
    } 
} 
+0

この宿題はありますか? – Aaron

+0

はい、学校向けではありませんが、これは学校外のクラスのためのものです。 – Jerryg225

+1

あなたのメインメソッドにいくつかのコードを入れることから始めます。 Wordオブジェクトを作成し、メソッドなどを呼び出します。 –

答えて

0

、ユーザの入力を取り、その後、最初の文字を取得し、最後の文字を取得することになっています、私は明示的に答えを与えないようにしようとします。 mainメソッドでは、単語を設定し、各メソッドを呼び出し、出力が正しいことを確認するために出力を出力する必要があります。

2

定義済みの入力を使用してメソッドを呼び出し、その結果を期待される出力と比較します。

例:

は、あなたがこのような方法があるとします。

public static int add(int a, int b) { 
    return a + b; 
} 

あなたはこのようにそれをテストしたい:だから、基本的に何の "契約" を定義

int result = add(3, 5); 
if(result != 8) { 
    //method is wrong 
} 

メソッドの取得結果と結果(戻り値やその他の変更された状態)を入力します。次に、あなたの入力に対してその結果が得られるかどうかをチェックし、そうであれば、メソッドが正しく動作すると仮定することができます。

さまざまなタイプの入力(さまざまなケースをテストするために、短い単語、長い単語など)で複数の方法を何度もテストすることができることは確かです)。

あなたのメソッドが誤った入力をどのように処理するかをテストすることもよくあります。 nullまたは空の文字列を渡します。

1

junitなどのツールをご覧ください。

単純なテストクラスを作成し、クラスとその動作をテストできます。

imports ...; 

public class MyTest{ 

    @Test 
    public void testMyClass(){ 
     Word w= new Word(); 
     w.setWord("test"); 
     Assert.assertEquals(w.getFirstLetter(), "t"); 
    } 
} 

Eclipseのようなツールを使用すると、このようなテストをうまく実行できます。

+0

私はちょうどあなたのgetFirstLetterが実際にゲッターではないと考えました。しかし、これはテストが一般的にどのように行われるかを示します。 –

+0

'getFirstLetter()'が戻り値の型が 'void'であることを除いて、テストコードはコンパイルされません。しかし、私は同意する、彼はJUnit(または同様の)を使用する方法を学ぶ必要があります。彼のコードが直ちにすべての問題を指摘しています(戻り値の型が変更されると、テストはNPEを取得します) –

1

だけヒント:コードあなた

public void setWord(String newWord) 
{ 
    String word = newWord; 
} 

:私はこれを見落とし :あなたは非常に近い、あなたが

public static void main(String[] args) { 
     Word test = new Word(); 
     test.setWord("something"); 
     // here you might read javadoc of the String class on how to compare strings 
} 

はEDITあなたのメソッドを呼び出すことができるよりも、Wordのインスタンスを必要としています書き込まれると変数wordが作成され、newWordが割り当てられて消えます。 クラスのメンバーを設定したい場合は、thisを使用する必要があります(main()で作成したインスタンス)。

public void setWord(String newWord) { 
    this.word = newWord; 
} 
+0

したがって、test.setWord( "somthing");スキャナにユーザが入力できますか? – Jerryg225

+0

これは私が持っていたもので、test.wordを印刷すると "null"と表示されます。 – Jerryg225

+0

@ Jerryg225「何か」は、何らかのソースからStringにする必要があります。私は自分の答えを更新しました。 – stacker

0

ジェイソンと同意する。あなたが何かを試したいのであれば、単にSystem.out.println()です。あなたのメソッドでは、あなたの戻り値の型はStringではなくvoidなので、それを変更して、メインプログラムrunに印刷することができます。

もしそうでなければ、System.out.println()voidの方法に入れてください。多くの問題を抱えてはいけません!

関連する問題