【问题标题】:ScalaTest display original Failure stacktraceScalaTest 显示原始失败堆栈跟踪
【发布时间】:2015-07-30 15:52:51
【问题描述】:

如何将 Try Failure 的原始堆栈跟踪显示为测试输出的一部分?

当我执行以下操作时:

 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

但堆栈跟踪显示它在测试中失败的位置,而不是失败的原始堆栈跟踪。

【问题讨论】:

    标签: scala scalatest


    【解决方案1】:

    如果在 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,而是检查内部类型/值:

    result.get should equal blah
    

    【讨论】:

    • 我明白这一点,但希望 ScalaTest 为我做这件事。
    猜你喜欢
    • 2019-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多