Exception 如何在Kotlin中测试预期的未检查异常?

Exception 如何在Kotlin中测试预期的未检查异常?,exception,testing,junit,kotlin,unchecked-exception,Exception,Testing,Junit,Kotlin,Unchecked Exception,我试图在Kotlin中编写一个测试,确保在特定情况下抛出未检查的异常 我试图使用org.junit.jupiter.api.Assertions.assertThrows如下: assertThrows(MyRuntimeException::class, Executable { myMethodThatThrowsThatException() }) 当我尝试这个时,我得到了一个 类型推断失败编译器错误 因为我的异常不是CheckedException而是运行时异常。有没有什么好方法可以在

我试图在Kotlin中编写一个测试,确保在特定情况下抛出未检查的异常

我试图使用
org.junit.jupiter.api.Assertions.assertThrows
如下:

assertThrows(MyRuntimeException::class, Executable { myMethodThatThrowsThatException() })
当我尝试这个时,我得到了一个

类型推断失败编译器错误


因为我的
异常
不是
CheckedException
而是
运行时异常
。有没有什么好方法可以在不进行简单的try-catch的情况下测试此行为?

assertThrows方法需要一个
类作为其第一个参数,但您试图给它一个
KClass
。要解决此问题,只需执行以下操作(如文档中所述):

您也可以省略显式的
可执行文件
类型:

assertThrows(MyRuntimeException::class.java, { myMethodThatThrowsThatException() })
或者,如果您的方法确实不接受任何参数,则可以使用方法引用:

assertThrows(MyRuntimeException::class.java, ::myMethodThatThrowsThatException)
您可以从Kotlin标准库使用:

assertFailsWith<MyRuntimeException> { myMethodThatThrowsThatException() }
assertFailsWith{MyMethodThrowsthatException()}
assertFailsWith<MyRuntimeException> { myMethodThatThrowsThatException() }