2017-10-06 8 views
-4
@Test 
public void test() throws Exception 
{ 
    try 
    { 
     //some code over here 
    } 
    catch(Exception e) 
    { 
     if(e.toString() == null) 
     { 
       System.out.print("Test Case: Successful"); 
     } 
     else 
     { 
       System.out.println("Test Case: Failed"); 
       System.out.println("Failing Reason: "+ e.toString()); 
     } 
    } 
} 

現在、私は上記のコードを持っています。 しかし、JUnitを実行するとき。 コンソールに何も印刷されませんでした。try catchステートメントを使用してステートメントを出力する

私は間違っていましたか?それとも、私はJUnitでSystem.out.printlnを使うことができません。

私はもう1つの質問があります: JUnitテストの完了に要した合計時間を印刷することは可能ですか?

+0

e.toStringの代わりにe.printStackTraceを試して、代わりに.lengthを使用してください。 –

+0

どの種類のExceptionオブジェクトを捕まえていますか? 'Exception'(' Throwable'から継承されます)のデフォルトの 'toString'は決してnullではありません。 – Berger

+0

なぜあなたはJUnitがあなたのために何をするのかを再考する必要があると思いますか?これをすべてのテストケースに追加しなければならないと想像してください。このコードでJUnitはテストが失敗したことを検出しません。 –

答えて

1

catchブロック内のコードは、tryブロック内のコードが例外をスローする場合にのみ実行されます。コード化されているので、例外がスローされない限り、何も出力しません。これはおそらくあなたが意味するものです:

@Test 
public void test() throws Exception 
{ 
    try 
    { 
     //some code over here 

     // last line of try block 
     System.out.print("Test Case: Successful"); 
    } 
    catch(Exception e) 
    { 
     System.out.println("Test Case: Failed"); 
     System.out.println("Failing Reason: "+ e.toString()); 
    } 
} 
+0

JUnitのテストケースを完了するために使用された合計時間をどのように表示できますか? –

+0

OPはこれをOPコードの修正として受け入れていますが、このパスを使わないことを強く推奨します。おそらくJUnitフレームワークがこれをもっとうまく処理します。 –

5

このコードは意味をなさないでしょう。

  • 例外がスローされない場合、例外はスローされないので、catchブロックには終りません。したがって、あなたが成功したケースでは終わることはありません(例外として、getMessage()nullを返す例外をスローすることを明示的にテストしていない限り)。その場合は、 fail()tryの最後の行として)
  • JUnitはすでに障害を処理しています。あなたのアプローチが「正しい」方法であれば、にこのコードを入れてください。のテストケース。どのくらいの繰り返しコード。
  • ブロックのコードがExceptionを投げて失敗した場合、問題を捕まえて飲み込んでしまいます。確かに、それはコンソールに印刷されますが、JUnitはそれをキャプチャする手段がないので、テストが合格するように見えます。 (Errorまたは他のThrowableがスローされた場合でも正常に失敗します)。要するに

は:ちょうどtryのコードを残して、あなたのtry/catchブロックを取り除き、およびテストフレームワークは、それがために設計されている正確に何やらせます。

+0

私は結果がテキストファイルに出力されるので、ユーザーはテストがスムーズに完了したかどうかを知ることができます。 –

+1

@LanYungLeeあなたは間違った場所でこれを解決しようとしています。これは、フレームワークで実行するテストケースではなく、フレームワークで解決したいものです。それ以外の場合は、何度も繰り返す必要があります。繰り返して、このようなJUnitの機能を破棄しています。 –

関連する問題