58

堆栈跟踪被截断 - 例如,它们以[info] ...

使用last或更改traceLevel没有帮助 - 它只是打印 sbt 包装器的完整堆栈跟踪。

这是使用 testng 进行测试(我也相信使用 scalatest 和 sl4j)

4

2 回答 2

70

使用此处文档中的提示:

(引)

您可以通过四种方式配置使用 sbt 运行时显示的输出:1) 关闭颜色,2) 显示短堆栈跟踪,3) 完整堆栈跟踪,以及 4) 显示所有内容的持续时间。为此,您必须将 -o 参数传递给 ScalaTest,并在 -o 之后放置以下任意组合:

  • D - 演出时长
  • S - 显示短堆栈跟踪
  • F - 显示完整的堆栈跟踪
  • W - 无颜色

例如,“-oDF”将显示完整的堆栈跟踪和持续时间(每个测试花费的时间量)。

要将参数从 sbt 传递给 ScalaTest,您可以全局添加测试选项,如下所示:

testOptions in Test += Tests.Argument("-oD")

(有关报价的其余部分,请参见网站)

您可以使用以下 sbt 命令在测试中启用完整的堆栈跟踪:

> set testOptions in YourProjectName += Tests.Argument("-oF")

根据 Sasha 的评论,这也可以在每次测试运行时从命令行完成,如下所示。

$ sbt test -- -oF
于 2014-12-12T16:55:31.960 回答
5

作为让 SBT 打印完整堆栈跟踪的替代方法,您可以在测试运行器周围放置一个try-catch块吗?例如,来自 REPL:

scala> try { throw new Exception } catch { case e => e }
res1: java.lang.Throwable = java.lang.Exception

scala> res1.printStackTrace
java.lang.Exception
    at $line2.$read$$iw$$iw$.liftedTree1$1(<console>:8)
    at $line2.$read$$iw$$iw$.<init>(<console>:8)
    at $line2.$read$$iw$$iw$.<clinit>(<console>)
    ...
于 2011-08-30T05:03:30.560 回答