ScalaTest 显示原始失败堆栈跟踪
ScalaTest display original Failure stacktrace
如何将尝试失败的原始堆栈跟踪显示为测试输出的一部分?
当我执行以下操作时:
result.success.value should equal blah
结果是失败
The Try on which success was invoked was not a Success.
或者,如果我先这样做:
result should be a 'success
它提供了更多信息,因为我可以看到异常:
Failure(java.lang.IllegalArgumentException: Cannot format given Object as a Date) was not a success
但是堆栈跟踪显示了它在测试中失败的位置,而不是失败的原始堆栈跟踪。
如果一些导致错误的代码被包装到 Try 中,这意味着异常在计算内部的某个地方被处理,并且它的原因和消息不会在某个地方打印,直到明确请求。为了查看原始原因,您可以直接访问失败对象(docs),或者手动处理失败:
val (ok, message) = result match {
case Success(v) => (true, "")
case Failure(ex) =>
(false, ex.getMessage + "\n" + ex.getStackTrace.mkString("\n"))
}
assert(ok, message)
This link 看起来也很有帮助。
如果您想要打印原始堆栈跟踪 - 使用 result.get
,但不检查 'success
,而是检查内部 type/value:
result.get should equal blah
如何将尝试失败的原始堆栈跟踪显示为测试输出的一部分?
当我执行以下操作时:
result.success.value should equal blah
结果是失败
The Try on which success was invoked was not a Success.
或者,如果我先这样做:
result should be a 'success
它提供了更多信息,因为我可以看到异常:
Failure(java.lang.IllegalArgumentException: Cannot format given Object as a Date) was not a success
但是堆栈跟踪显示了它在测试中失败的位置,而不是失败的原始堆栈跟踪。
如果一些导致错误的代码被包装到 Try 中,这意味着异常在计算内部的某个地方被处理,并且它的原因和消息不会在某个地方打印,直到明确请求。为了查看原始原因,您可以直接访问失败对象(docs),或者手动处理失败:
val (ok, message) = result match {
case Success(v) => (true, "")
case Failure(ex) =>
(false, ex.getMessage + "\n" + ex.getStackTrace.mkString("\n"))
}
assert(ok, message)
This link 看起来也很有帮助。
如果您想要打印原始堆栈跟踪 - 使用 result.get
,但不检查 'success
,而是检查内部 type/value:
result.get should equal blah