[英]How do I test expected Unchecked Exceptions in Kotlin?
我正在嘗試在Kotlin中編寫一個測試,以確保在特定情況下拋出未經檢查的異常。
我正在嘗試使用org.junit.jupiter.api.Assertions.assertThrows
這樣的:
assertThrows(MyRuntimeException::class, Executable { myMethodThatThrowsThatException() })
當我嘗試這個我得到一個
類型推斷失敗的編譯器錯誤
因為我的Exception
不是CheckedException
而是RuntimeException
。 有什么好的方法可以測試這種行為而無需天真的嘗試捕獲?
您可以使用assertFailsWith從科特林標准庫:
assertFailsWith<MyRuntimeException> { myMethodThatThrowsThatException() }
assertThrows
方法期望將Class
作為其第一個參數,但是您正在嘗試為其提供KClass
。 為了解決這個問題,只是做了以下內容(如文檔中描述這里 ):
assertThrows(MyRuntimeException::class.java, Executable { myMethodThatThrowsThatException() })
您還可以省略顯式的Executable
類型:
assertThrows(MyRuntimeException::class.java, { myMethodThatThrowsThatException() })
或者,如果您的方法確實沒有任何參數,則可以使用對其的方法引用:
assertThrows(MyRuntimeException::class.java, ::myMethodThatThrowsThatException)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.