7

我想显示在 scala 测试中抛出的异常消息。

 " iWillThrowCustomException Method Failure test.   
 " should "Fail, Reason: Reason for failing. " in {
 evaluating {
      iWillThrowCustomException();
   } should produce [CustomException]
}

如果 CustomExeption 会为不同的输入抛出不同类型的消息,比如说

(对于 -ve 金额 - 金额小于零,对于金额中的字符 - 无效金额)

如何显示在块中抛出的消息,因为它将通过 CustomException 并且它将显示测试成功,但是对于哪个 senario 它已经抛出了错误

4

2 回答 2

11

或者,您可以查看intercept

val ex = intercept[CustomException] {
    iWillThrowCustomException()
}
ex.getMessage should equal ("My custom message")
于 2012-09-29T11:32:45.503 回答
9

evaluating还会返回一个异常,以便您可以检查它或打印消息。这是ScalaDoc的示例:

val thrown = evaluating { s.charAt(-1) } should produce [IndexOutOfBoundsException]
thrown.getMessage should equal ("String index out of range: -1")

据我所知,您不能在测试名称中包含异常消息。


您可以做的是添加有关测试的其他信息info()

"iWillThrowCustomException Method Failure test." in {
    val exception = evaluating { iWillThrowCustomException() } should produce [CustomException]
    info("Reason: " + exception.getMessage)
}

这将在测试结果中显示为嵌套消息。您可以在 ScalaDoc中找到有关此的更多信息。

于 2012-09-29T11:29:43.490 回答