2014-09-01 2 views
1

테스트에서 예외가 throw 될 때마다 사용자 지정 메서드를 호출 할 수 있습니다. 즉 여러 테스트 (@Test 주석이 있음)가 있고 예외 (예 : junit 등의 사용자 지정 메시지 작성)를 처리하는 하나의 메서드 만 작성하려고합니다. (모든 테스트를 위해 try/catch 블록이 아닌 것을 찾고 있습니다)테스트에서 예외를받을 때 사용자 지정 메서드 호출

감사합니다.

+0

언제나 catch 블록에서이 메소드를 호출 할 수 있지만, 이것을 uni에서 정확히 사용하는 것은 무엇입니까? 테스트? – Stultuske

+0

@After 메서드를 사용하여 사용자 지정 논리를 실행하는 방법은 어떻습니까? – shlomi33

+0

shlomi33 - 이것은 내 첫번째 생각이었습니다. 그러나 예외가 발생하면 @After 메서드에서 어디에서 찾을 수 있는지 어떻게 알 수 있습니까? Stultuske- 이 사용 이유는 JUnit이 기본적으로 보내는 정보 중 일부를 추상화하여 사용자가 이해하고 디버그하기 쉽게하기 위해서입니다. – dlivshen

답변

0

JUnit을 TestRule의 많은이 등을 이용하여 보시기 바랍니다 :

import org.junit.Rule; 
import org.junit.Test; 
import org.junit.rules.TestWatcher; 
import org.junit.runner.Description; 

public class TestWatcherExample { 

    @Rule 
    public MyTestWatcher myTestWatcher = new MyTestWatcher(); 

    @Test 
    public void testName() throws Exception { 
     System.out.println("hello"); 
     throw new Exception("ooops, something bad just happened"); 
    } 

    public static class MyTestWatcher extends TestWatcher { 

     @Override 
     protected void failed(Throwable e, Description description) { 
      super.failed(e, description); 
      // Just doing my special stuff here 
      System.out.println("test faild with this message " + e.getMessage()); 
     } 

    } 

} 

당신은 시험에 대한 추가 정보가 필요한 경우 규칙은 여기에서 읽습니다 : https://github.com/junit-team/junit/wiki/Rules

+0

굉장! 그게 바로 내가 뭘 찾고 있었는지 고마워요! – dlivshen

+0

기쁨 .BTW, 다른 사용자를 참조 할 때 그 전에 '@'기호를 사용하십시오. 다른 사용자가 메시지를받을 수 있도록 사용자 이름을 입력하십시오 (예 : @ shlomi33 및 shlomi33) – shlomi33

+0

이 메시지는 작동하지만 여전히 던져진 원래 예외를 대체하지 않습니다. 이제 원본과 사용자 정의 예외가 모두 표시됩니다. – dlivshen

관련 문제