【问题标题】:How to only show stdout of a scalatest test if it fails如果失败,如何仅显示 scalatest 测试的标准输出
【发布时间】:2013-08-06 11:16:49
【问题描述】:

有了junit-interface runner,就有了这个方便的选项:

-q 为成功的测试抑制标准输出。 Stderr 打印到 安慰 一般。标准输出写入缓冲区并在测试时丢弃 成功。如果失败,缓冲区将转储到控制台。由于标准输入法 Java 中的重定向是一个糟糕的组合(System.setOut() 改变了静态 通过本机代码的最终字段 System.out)这可能不适用于所有人 情景。 Scala 有自己的控制台,具有健全的重定向功能。如果 在类路径上检测到 Scala,junit-interface 尝试重新路由 scala.Console 的标准输出。

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

【问题讨论】:

标签: scala scalatest


【解决方案1】:

根据ScalaTest网站上的这个info,你可以设置一些标志来抑制一些消息:

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

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

【讨论】:

    【解决方案2】:

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

    按照那里的建议,您可以将-oNCXEHLOPQRM 添加到运行选项中。这意味着在你的 sbt 中你需要添加:

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

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

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

    sbt test -error
    

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

    【讨论】:

      猜你喜欢
      • 2020-11-14
      • 2012-07-03
      • 1970-01-01
      • 2014-11-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-04
      • 1970-01-01
      相关资源
      最近更新 更多