2013-10-20 19 views
8

İstisnayı atan bir geçersiz yöntemle alay ettiğimde neden istisnayı kullanmam gerektiğini bilmek istiyorum. Örneğin ŞimdiMockito, kontrol edilen istisna ile geçersiz yöntem

public class MyObject { 
    public void call() throws SomeException { 
     //do something 
     } 
} 

için

i yapıyorum,

@Mock 
MyObject myObject; 

doNothing().when(myObject).call() 

bu i durum işlenecek neden ihtiyaç, merak ediyorum

"error: unreported exception SomeException; must be caught or declared to be thrown"

diyerek derleme hatası ile sonuçlanır kendisi alay edilen yöntem için. Java'da Mockito öğesini kullanarak bir nesneyi alay ettiğinizde

+2

İşe yaramalısınız. Sadece test metoduna '' Exception '' yazdı. Tüm JUnit yöntemlerini 'İstisna'yı' bir alışkanlık meselesi olarak işaretledim - yapmamak için bir neden yok. –

+0

@DawoodibnKareem Bir testin istisnalar atması gerektiğine işaret etmek istediğimde, örneğin @Test (beklenen = ...) 'gibi onaylama yardımcılarını kullanıyorum. Testin kendisi ile ilgili herhangi bir yararlı bilgiye sahip olmadığından, test yöntemi imzasındaki 'throws 'maddesinden kaçınmaya çalışıyorum. –

cevap

7

Çerçeve dil özelliklerine hiçbir şey değiştirmez. Ve Java'da, throws tümcesi derlemede tanımlanmıştır. Çalışma zamanında bildirilen istisnaları değiştiremezsiniz. Durumunuzda, MyObject.call() yöntemini çağırırsanız, herhangi bir normal Java kodunda olduğu gibi SomeException'u işlemeniz gerekir.

Birim testinden beri, test etmediğiniz şeylerle uğraşmak istemezsiniz. Sizin durumunuzda, test yönteminde throws SomeException'u tekrar bildireceğim.

İlgili konular