簡體   English   中英

如何在Kotlin中測試預期的未經檢查的異常?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM