如何失败,如何只显示最新测试的stdout

时间:2013-08-05 16:47:06

标签: scala scalatest

使用junit-interface亚军,有一个方便的选项:

  

-q禁止stdout进行成功测试。 Stderr被打印到了   安慰         一般。将Stdout写入缓冲区并在测试时丢弃         成功。如果失败,则将缓冲区转储到控制台。自从stdio         Java中的重定向是一个糟糕的问题(System.setOut()改变了静态         最终字段System.out通过本机代码)这可能不适用于所有人         场景。 Scala拥有自己的控制台,具有理智的重定向功能。如果         在类路径上检测到Scala,junit-interface尝试重新路由         scala.Console也是stdout。

我想知道是否有一种简单的方法让scalatest做同样的事情。我可以尝试自己重定向输出,但如果可能的话,我更愿意使用标准的东西。

2 个答案:

答案 0 :(得分:0)

根据ScalaTest网站上的info,你可以设置一些标志来禁止某些消息:

如果你在build.sbt中添加这样的一行,你的记录器将不会在stdout中显示成功的测试:

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

答案 1 :(得分:0)

实际上,这是在scalatest存储库上的github上提出的问题。您可以找到它here

如此处所建议,您可以将-oNCXEHLOPQRM添加到运行选项。这意味着您需要在sbt中添加:

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

仅此一项可能就足够了,因为sbt本身会记录自己的启动,并且所有测试都通过了。如果要通过失败的测试,可以将-error标志添加到sbt命令,然后它将跳过信息日志级别。

在这种情况下,当所有测试通过时,输出将完全为空。 这样的命令的示例将是:

sbt test -error

如果您想进一步了解scala测试配置报告,可以here进行。他们有很多选择。