繁体   English   中英

在使用sbt和testng时,如何获得测试中抛出的异常的完整堆栈跟踪?

[英]How can I get complete stacktraces for exceptions thrown in tests when using sbt and testng?

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

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

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

使用此处文档中的提示:

(引)

您可以通过四种方式配置以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

作为让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>)
    ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM