2017-06-21 11 views
0

それは試してみるのcatchブロックを使用し、中にそれを保存せずにこのsrackトレースをキャプチャする方法がある場合、私は思っていたエラーScreen of the Failure trace印刷スタックトレース

をランタイムに起因する障害が発生したところ、時々私は、JUnitテストを持っていますファイル。私は

 if(Thread.currentThread().getStackTrace() != null){ 

      logger.log(LogStatus.FAIL, "Rune Time Exception"); 
      report.endTest(logger); 
      report.flush(); 
     } 

を使用していましたが、障害が発生した場合、これは知っていないか、スタックトレースで何かがある場合ではない、それはif文の中に入る

。何とかJUnitタブの "Errors"キーワードを取得する方法はありますか?スタックトレースをログファイルに記録しますか?

ありがとうございました

+0

あなたはtry/catchブロックを使用したくない理由はありますか? – ZeldaZach

+0

さて、私は多くのデータ挿入ポイントが必要です。可能性のある例外のために各自と誰もがキャッチしようとすると、永遠に私にかかるでしょう。そのため、ランタイムエラーが発生した場合はダンプファイルを取得するだけでしたので、レポートでコンソールに表示されているものと同じものを見ることができます –

+0

通常、すべてのテストメソッドで、最初に 'try'を入れます最後に 'catch(Exception e)'が発生し、例外が捕捉され、スタックトレースが記録され、junitが正しく動作するように再スローされます。または、あなたのケースでは、別のテストメソッドの各データ挿入ポイントですか? – RealSkeptic

答えて

1

お探しのものはデフォルトの例外ハンドラと呼ばれています。 (Java UncaughtExceptionHandler

ここでは、使用についてtutorialです。

//ExceptionHandlerExample.java 
package com.air0day.machetejuggling; 

public class ExceptionHandlerExample { 
    public static void main(String[] args) throws Exception { 

    Handler handler = new Handler(); 
    Thread.setDefaultUncaughtExceptionHandler(handler); 

    Thread t = new Thread(new SomeThread(), "Some Thread"); 
    t.start(); 

    Thread.sleep(100); 

    throw new RuntimeException("Thrown from Main"); 
    } 

} 

class Handler implements Thread.UncaughtExceptionHandler { 
    public void uncaughtException(Thread t, Throwable e) { 
    System.out.println("Throwable: " + e.getMessage()); 
    System.out.println(t.toString()); 
    } 
} 

class SomeThread implements Runnable { 
    public void run() { 
    throw new RuntimeException("Thrown From Thread"); 
    } 
} 
+0

これは私があなたに感謝していたのと似ています! –

関連する問題