[英]Any way to suppress stack traces from ScalaTest in latest SBT versions?
当SBT中的ScalaTest测试失败时,我得到堆栈跟踪。 我已尝试set traceLevel in Test := -1
在SBT提示符下输入set traceLevel in Test := -1
,尝试更改build.sbt
文件中的内容等,但似乎没有任何帮助。
我想摆脱的是:
> test
[info] TestWritingFunctions:
[info] - threeSquares examples *** FAILED ***
[info] scala.NotImplementedError: an implementation is missing
[info] at scala.Predef$.$qmark$qmark$qmark(Predef.scala:252)
[info] at TestWritingFunctions$$anonfun$1.apply$mcV$sp(WritingFunctions.scala:17)
[info] at TestWritingFunctions$$anonfun$1.apply(WritingFunctions.scala:16)
[info] at TestWritingFunctions$$anonfun$1.apply(WritingFunctions.scala:16)
[info] at org.scalatest.Transformer$$anonfun$apply$1.apply(Transformer.scala:22)
[info] at org.scalatest.Transformer$$anonfun$apply$1.apply(Transformer.scala:22)
[info] at org.scalatest.OutcomeOf$class.outcomeOf(OutcomeOf.scala:85)
[info] at org.scalatest.OutcomeOf$.outcomeOf(OutcomeOf.scala:104)
[info] at org.scalatest.Transformer.apply(Transformer.scala:22)
[info] at org.scalatest.Transformer.apply(Transformer.scala:20)
[info] ...
正如你所看到的,测试失败了,因为我使用了新的???
构造为占位符,但由于我知道那里有一个占位符,我只是喜欢*** FAILED ***
消息而没有所有的rigamarole。 那可能吗?
您可以使用“-o ...”而不使用F或S(即“-o”或“-oD”不会给您堆栈跟踪,但不能使用“-oF”,“ - S”或“-oDS”会给你一个堆栈跟踪)。 这意味着您将抑制所有堆栈跟踪。 如果你根本没有指定记者,你会得到一个“-o”,这意味着没有堆栈痕迹。
如果你喜欢一般的短栈跟踪,但是当???抛出NotImplementedError时不想看到它们,你可以覆盖withFixture并将NotImplementedError更改为挂起的测试:
import org.scalatest._
trait PendingIfUnimplemented extends SuiteMixin { this: Suite =>
abstract override def withFixture(test: NoArgTest): Outcome = {
super.withFixture(test) match {
case Failed(ex: NotImplementedError) => Pending
case other => other
}
}
}
通过这种方式,无论您选择什么,您仍然可以获得常规故障的短,长或无堆栈跟踪,但是看到(待定)因为???而失败的测试。
(不是权威,但因为没有其他人回答:)
我怀疑traceLevel
没有做任何事情,因为堆栈跟踪来自ScalaTest,而不是来自sbt。
sbt确实有一个相关的logLevel
设置。 试试这个:
set logLevel in Test := Level.Warn
但请注意,这不仅会抑制堆栈跟踪,还会抑制示例中以[info]
开头的所有行。 相反,你最后会得到[error]
东西,这至少会让套件的名称失败。
如果你真的只想抑制堆栈跟踪而不改变其他任何东西,我认为这可能是不可能的。 查看http://www.scalatest.org/user_guide/using_the_runner ,我看到了使堆栈跟踪更短( -oS
)或更长( -oF
)的选项,但没有完全省略堆栈跟踪的选项。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.