我試圖讓我的一個模擬對象拋出一個檢查異常,當一個特定的方法被調用。我正在嘗試以下。throw checked與Mockito的嘲諷例外
@Test(expectedExceptions = SomeException.class)
public void throwCheckedException() {
List<String> list = mock(List.class);
when(list.get(0)).thenThrow(new SomeException());
String test = list.get(0);
}
public class SomeException extends Exception {
}
但是,這會產生以下錯誤。
org.testng.TestException:
Expected exception com.testing.MockitoCheckedExceptions$SomeException but got org.mockito.exceptions.base.MockitoException:
Checked exception is invalid for this method!
Invalid: com.testing.MockitoCheckedExceptions$SomeException
望着Mockito documentation,他們只用RuntimeException
,是不是可以從一個的Mockito模擬對象拋出checked異常?
儘管我的真實代碼並未實際使用List,但您的答案也適用於該方法調用。我嘲笑錯誤的方法。謝謝。 – 2010-09-21 17:19:09
extra:Mocktio不會抱怨如果你拋出一個沒有任何throwables的方法,但你也會得到這個異常 – dwana 2015-09-25 07:36:34
對於Kotliners:Kotlin沒有檢查異常,所以你通常不能聲明(在函數簽名中)函數拋出異常。但是,您可以使用'Throws'註釋來註釋該函數,以使編譯器生成與在等效Java代碼中聲明throws相同的字節碼。有關更多詳細信息,請參見[此處](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.jvm/-throws/index.html)。 – Metallica 2017-10-04 22:58:48