2012-04-22 10 views
0

私はメソッド:doctorQueueを持っています。データ型(java.util.Dateによる)、時間とID(文字列)の3つのパラメータがあります。JunitメソッドのJava-Junit/misunderstanding

戻り値はvoidであり、すでに同じ時間にキューが存在する場合は、例外が返されます。 The method assertTrue(boolean) in the type Assert is not applicable for the arguments (void)

public void checkQueueDoctor(){ 
Date date = new Date (2012,4,25); 
Time time = new Time (13, 0, 0); 
assertTrue(doctorQueue("83849829", date, time)); 
..... // and so on 
} 

は、それは私に次の問題を与える:

私はJUnitのを使用して、次の方法を書きました。

私はもちろんそれを理解しましたが、私は関数をチェックすることができます、それは戻り値が無効ですか?

答えて

1
public void checkQueueDoctor(){ 
    Date date = new Date (2012,4,25); 
    Time time = new Time (13, 0, 0); 
    doctorQueue("83849829", date, time); 
    ..... // and so on 
} 

で十分です。例外がスローされた場合、テストは自動的に失敗します。

0

医師を追加した後にキューが変更されていることを確認します。

0

どのように機能をチェックできますか、戻り値は無効ですか?

できません。例外がスローされたときに例外がスローされたかどうかだけをチェックすることができます。悪い引数など、あなたが何ができるかAssert.fail()
を経由して通知するこの方法の副作用をチェックするラッパー・メソッドを作成し、trueまたはfalseを返却し、テストしたい場合はアサート

1

からそれを呼び出すことです例外がvoidメソッドによってスローされていないことを、一般的なパターンは次のとおりです。

try { 
    doctorQueue("83849829", date, time); 
    // if we make it to this line, success! 
} catch (Exception e) { 
    fail("queue adding threw an exception"); 
} 

あなたがを行い方法はただに失敗コールを移動し、例外をスローすることを確認したい別の状況を持っている場合もう1つのブロック:

try { 
    doctorQueue(alreadyPresentElement, date, time); 
    fail("expected an exception but didn't get one!");  
} catch (Exception e) { 
    // we expected an exception and got it! Success! 
} 

(いずれの場合も、それは仕方によって、ちょうどExceptionよりも、より具体的な例外をキャッチするために、おそらく良いでしょう。)

+1

を見ることができます方法は、メソッドを呼び出すだけです。 try ... catchメソッドを呼び出すことで、元の例外が隠されている – NamshubWriter

1

あなたはJUnitの4を使用している場合は、例えば、予想される例外をチェックすることができます。

@Test(expected = Exception.class) 
public void checkQueueDoctor() throws Exception { 
    Date date = new Date (2012,4,25); 
    Time time = new Time (13, 0, 0); 
    doctorQueue("83849829", date, time); 
} 

を使用すると、例外がによってスローされていないことをテストしたい場合は、このlink

+1

例外がスローされないかどうかをテストする方法が問題だと思います。例外をテストするためのあなたの例は、ポスターがテストしたいと思う他のシナリオにとって有益だと確信しています –

関連する問題