2014-11-10 9 views
9

finally { } bloğundaki writer.close() yöntemi bir Junit Assertion Hatası üzerinde çalışır mı? ŞimdiBir 'Junit' testi 'try' bloğundan bir Onaylama Hatası atarsa ​​bile 'nihayet' patlatılır mı?

@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? 
    } 
} 

olacak sıradan bir akış gibi finally() blok çalıştırmak:

Aşağıdaki kodu varsayalım?

+2

Evet, uygulanmalı. –

+0

olası yinelenen [Anlamak deneyin sonunda nihayet geri dönüş ile] (http://stackoverflow.com/questions/26658853/understanding-try-catch-finally-with-return) – StackFlowed

+0

Üzgünüm, klasik deneme, yakalama ve nihayet akışını anlıyorum . Bu soru anlam bakımından ilgili Junit test akışında farklıdır. –

cevap

11

Evet, sonuncu blok çalışır. Junit onaylama hataları sadece normal istisnalardır, böylece normal java try-catch-nihayet desen çalışacaktır. (İsterseniz İstisna'yı bile yakalayabilirsiniz)

+1

Teşekkürler. Test edildi ve çalışıyorsa. –

1

Evet. Son olarak, bloklar, ne olursa olsun, ateşin bir kabıdır. JUnit, ya da bu örnek, farklı değil.

İlgili konular