如何配置sbt test/ScalaTest只显示失败?

nim*_*mda 20 scala sbt scalatest

是否有办法将测试结果截断为仅在单元测试失败时才显示单元测试的结果文本?我正在开发一个包含850个单元测试的Scala项目,成功的单元测试中的绿色文本使得很难专注于失败.

我在说什么的例子:

[info] - should have colors
[info] - should not be dead
//.... x 100
[info] - animals should not be rainbows *** FAILED *** 
[info] -"[rainbow]s" was not equal to "[ponie]s" (HappinessSpec.scala:31)
Run Code Online (Sandbox Code Playgroud)

我想要的只是显示失败的东西:

[info] - animals should not be rainbows *** FAILED *** 
[info] -"[rainbow]s" was not equal to "[ponie]s" (HappinessSpec.scala:31)
Run Code Online (Sandbox Code Playgroud)

我意识到有test-quicksbt命令,但是在我的情况下它仍然运行300次成功的单元测试,当时只有30次失败.

在使用方面,我正在寻找的东西:

sbt> ~ test -showOnlyFailures

我也很高兴能够在运行单元测试结束时显示所有失败.IIRC,这就是RSpec在Ruby中的工作方式......

goo*_*zez 17

将以下内容添加到build.sbt后,scalaTest将在标准报告后显示失败摘要:

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

I - show reminder of failed and canceled tests without stack traces
T - show reminder of failed and canceled tests with short stack traces
G - show reminder of failed and canceled tests with full stack traces
Run Code Online (Sandbox Code Playgroud)

还有一个"drop TestSucceeded events"标志,但我没有使用它:http: //www.scalatest.org/user_guide/using_the_runner


Pow*_*ers 6

更新了 Scalatest 3 的答案。

以下是文件的新语法,build.sbt用于在测试套件运行的底部重新打印所有失败:

testOptions in Test += Tests.Argument(TestFrameworks.ScalaTest, "-oI")
Run Code Online (Sandbox Code Playgroud)

您可能还想抑制信息通知,以便更容易看到失败。

testOptions in Test += Tests.Argument(TestFrameworks.ScalaTest, "-oNCXELOPQRM")
Run Code Online (Sandbox Code Playgroud)

以下是所有选项所代表的含义:

  • N - 删除 TestStarting 事件
  • C - 删除 TestSucceeded 事件
  • X - 删除 TestIgnored 事件
  • E - 删除 TestPending 事件
  • H - 掉落 SuiteStarting 事件
  • L - drop SuiteCompleted 事件
  • O - drop InfoProvided 事件
  • P - 删除 ScopeOpened 事件
  • Q - 删除 ScopeClosed 事件
  • R - 删除 ScopePending 事件
  • M - drop MarkupProvided 事件

"-oI"在测试套件运行结束时再次打印错误通知,而"-oNCXELOPQRM"仅显示失败的测试。

有关更多详细信息,请参阅ScalaTest 网站上的配置报告器部分。