ScalaTest thrownBy 测试异常信息

ScalaTest thrownBy testing exception message

为了测试我的代码是否抛出预期的异常,我使用以下语法:

  an [IllegalArgumentException] should be thrownBy(Algorithms.create(degree))

有什么方法可以测试抛出的异常是否包含预期的消息,例如:

  an [IllegalArgumentException(expectedMessage)] should be thrownBy(Algorithms.create(degree)) -- what doesn't compile 

?

Documentation:

the [ArithmeticException] thrownBy 1 / 0 should have message "/ by zero"

并使用该示例:

 the [IllegalArgumentException] thrownBy(Algorithms.create(degree)) should have message expectedMessage

您检查邮件的语法有误。作为 bjfletcher 建议的替代方案,您还可以根据文档使用以下内容:

  1. 捕获异常并将其赋值给一个val

val thrown = the [IllegalArgumentException] thrownBy Algorithms.create(degree)

  1. 使用 val 检查其内容。例如:

thrown.getMessage should equal ("<whatever the message is")

我个人更喜欢 bjfletcher 介绍的第一个替代方案,因为它更紧凑。但是捕获异常本身,让您有更多机会检查其内容。