2012-02-29 7 views
0

こんにちは、私はどのようにするSystem.out.println( "テストが失敗した")だけでなく、ログインすることができ、カスタムJUnitのランナーカスタムjunitランナー経由で例外スタックトレースを記録できますか?

public class InterceptorRunner extends BlockJUnit4ClassRunner { 

    @Retention(RetentionPolicy.RUNTIME) 
    @Target(ElementType.TYPE) 
    public @interface InterceptorClasses { 
     public Class<?>[] value(); 
    } 

    public InterceptorRunner(Class<?> klass) throws InitializationError { 
     super(klass); 
    } 

    @Override 
    public Statement methodInvoker(FrameworkMethod method, Object test) { 
     InterceptorStatement statement = new InterceptorStatement(super.methodInvoker(method, test)); 
     InterceptorClasses annotation = test.getClass().getAnnotation(InterceptorClasses.class); 
     Class<?>[] klasez = annotation.value(); 
     try { 
      for (Class<?> klaz : klasez) { 
       statement.addInterceptor((Interceptor) klaz.newInstance()); 
      } 
     } catch (IllegalAccessException ilex) { 
      ilex.printStackTrace(); 
     } catch (InstantiationException e) { 
      e.printStackTrace(); 
     } 
     return statement; 
    } 

    @Override 
    public void run(RunNotifier notifier) { 
     FailListener listener = new FailListener(); 
     notifier.addListener(listener); 
     super.run(notifier); 
     notifier.removeListener(listener); 
    } 
} 

とカスタムリスナー

public class FailListener extends RunListener { 

    @Override 
    public void testFailure(Failure failure) throws Exception { 
     System.out.println("test fails"); 
     super.testFailure(failure); 
    } 

    public void testStarted(Description description) throws Exception { 
     System.out.println("Test started"); 
     super.testStarted(description); 
    } 

} 

を持っています。例外やその他の情報もありますか?

私は失敗を使用することができるようですが、私はどのようにするかわかりません。

答えて

1

FailureオブジェクトにはメソッドがありますgetException().

+0

ありがとう、本当に役立ちます –

関連する問題