如何在 ScalaTest 中测试两个或多个异常?

How to test for two or more exceptions in ScalaTest?

我正在使用 ScalaTest 进行单元测试。我目前有以下内容:

f(x) should produce[Exception]

我想指定两个或更多异常子类,例如

f(x) should (produce[ExceptionA] or produce[ExceptionB])

这可能吗?如果没有,推荐的继续方式是什么?

如果您有一段代码在抛出异常时不确定,我会考虑重构您的代码或测试。也就是说,您可以使用 evaluating 块来捕获抛出的异常,然后检查它是否是所需类型之一。例如

val caught = evaluating {
  // code that should throw an exception
} should produce [Exception]

然后

assert(caught.isInstanceOf[ExceptionA] || caught.isInstanceOf[ExceptionB])