2014-11-10 1 views
9

finally { } 블록 내의 writer.close() 메서드가 Junit 어설 션 오류에서 실행됩니까? 이제Junit 테스트가 'try'블록의 어설 션 오류를 throw 한 후에도 'finally'블록이 실행됩니까?

@Test 
public void testWriter() { 

    try { 
     writer.open(); 

     final List<MyBean> myBeans = new ArrayList<ProfileBean>(); 

     /** Add 2 beans to the myBeans List here. **/ 

     final int beansWritten = writer.writeBeans(myBeans); 

     // Say this assertion error below is triggered 
     org.junit.Assert.assertEquals("Wrong number of beans written.", -1, profilesWritten); 

    } finally { 
     writer.close(); // will this block run? 
    } 
} 

것이다 단지 일정한 흐름과 같은 finally() 블록 실행 :

다음 코드를 가정?

+2

예, 실행해야합니다. –

+0

가능한 복제본 [이해와 함께 마침내 시도해보기] (http://stackoverflow.com/questions/26658853/understanding-try-catch-finally-with-return) – StackFlowed

+0

죄송합니다, 고전적인 시도를 이해하고 마지막으로 흐름을 이해합니다. . 이 질문은 관련 Junit 테스트 흐름과는 다릅니다. –

답변

11

예 finally 블록이 실행됩니다. Junit 어설 션 오류는 정상적인 예외이므로 일반적인 Java try-catch-finally 패턴이 작동합니다. (원한다면 Exception을 잡을 수도 있습니다)

+1

감사합니다. 그것을 테스트하고 작동하는 경우. –

1

예. 마지막으로 블록은 무엇이든지 상관없이 실행되는 코드 용 컨테이너로 사용됩니다. JUnit 또는이 예제는 다르지 않습니다.