如何在ScalaTest中显示“should produce [exception]”中抛出的异常

时间:2012-09-29 11:19:34

标签: scala

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

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

如果CustomExeption将针对不同的输入抛出不同类型的消息,请说

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

如何显示块中抛出的消息,因为它会通过    CustomException它将显示Test Success,但是它为哪个senario抛出了错误

2 个答案:

答案 0 :(得分:11)

另外,您可以查看intercept

val ex = intercept[CustomException] {
    iWillThrowCustomException()
}
ex.getMessage should equal ("My custom message")

答案 1 :(得分: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)
}

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