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

时间:2014-02-16 01:59:02

标签: 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)

我想要的只是表明失败的原因:

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

我意识到有test-quick sbt命令,但它仍然运行300次成功 在我只有30次失败的情况下进行单元测试。

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

sbt> ~ test -showOnlyFailures

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

4 个答案:

答案 0 :(得分:16)

将以下内容添加到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

还有一个"掉落的TestSucceeded事件"标志,但我没有使用它: http://www.scalatest.org/user_guide/using_the_runner

答案 1 :(得分:3)

对于那些使用带有scalatest-maven-plugin的maven的用户,可以添加以下配置:

<configuration>
  <stdout>I</stdout>
</configuration>

答案 2 :(得分:3)

更新了Scalatest 3的答案。

这里有build.sbt文件的新语法,用于重新打印测试套件运行底部的所有故障:

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

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

testOptions in Test += Tests.Argument(TestFrameworks.ScalaTest, "-oNCXELOPQRM")

以下是所有选项所代表的内容:

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

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

有关详细信息,请参阅the configuring reporters section on the ScalaTest website

答案 3 :(得分:2)

您可以尝试使用sbt命令

<强> last-grep error test

这应该只显示错误/失败。