8

使用junit-interface 运行器,有这个方便的选项:

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

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

4

2 回答 2

0

实际上,这是在 github 上最大规模的存储库中提出的一个问题。你可以在这里找到它。

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

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

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

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

sbt test -error

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

于 2020-08-26T13:31:33.930 回答
0

根据 ScalaTest 网站上的此信息,您可以设置一些标志来抑制某些消息:

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

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

于 2016-10-26T09:04:49.677 回答