在 ScalaTest 中,我通过以下方式未通过测试:
fail("message")
Run Code Online (Sandbox Code Playgroud)
它仅以红色突出显示消息,但不打印堆栈跟踪。
我不得不采取一种非常尴尬的方式,例如:
try { throw new Exception } catch { case e =>
e.printStackTrace()
fail("message")
}
Run Code Online (Sandbox Code Playgroud)
获取堆栈跟踪。
我尝试这样做fail("message", new Exception),但它也没有打印。有没有更好的方法来做到这一点?
报告器可以通过配置参数配置为显示短堆栈跟踪或完整堆栈跟踪
S - show short stack traces
F - show full stack traces
Run Code Online (Sandbox Code Playgroud)
例如,在标准输出上配置短堆栈跟踪,如下build.sbt所示
testOptions in Test += Tests.Argument(TestFrameworks.ScalaTest, "-oS")
Run Code Online (Sandbox Code Playgroud)
然后进行以下测试
import org.scalatest._
class HelloSpec extends FlatSpec with Matchers {
"The Hello object" should "say hello" in {
fail("boom!")
}
}
Run Code Online (Sandbox Code Playgroud)
输出类似的东西
[info] HelloSpec:
[info] The Hello object
[info] - should say hello *** FAILED ***
[info] boom! (HelloSpec.scala:7)
[info] org.scalatest.exceptions.TestFailedException:
[info] ...
[info] at example.HelloSpec.$anonfun$new$1(HelloSpec.scala:7)
[info] at org.scalatest.OutcomeOf.outcomeOf(OutcomeOf.scala:85)
Run Code Online (Sandbox Code Playgroud)