如何连续测试直到flakey测试失败?

时间:2014-03-13 08:02:27

标签: scala sbt

如果有时候测试失败了,我可以要求sbt继续测试直到失败吗?

否则,我在观看箭头时卡住了向上箭头。 (双关语无意识但发酵)

https://stackoverflow.com/q/22366719/1296806

4 个答案:

答案 0 :(得分:11)

我遇到了同样的问题,我最终将其作为一个命令来实现。

lazy val root = Project("test", file(".")).
  settings(commands += Command.command("testUntilFailed") { state =>
    "test" :: "testUntilFailed" :: state
  })

优点是它将跳过SBT加载。您还可以添加额外参数或运行testOnly来测试单个测试。

答案 1 :(得分:4)

老问题,但我自己也有同样的需求,这里有一个解决方案:如果你用测试运行一次,sbt会返回非零退出代码,因此,一种循环直到失败的方法就是查看shell中的退出代码:

while [ $? -eq 0 ]; do sbt test; done

答案 2 :(得分:1)

我已经为片状测试检测创建了sbt插件:sbt-flaky。您可以运行test:

  • 指定的持续时间sbt clean "flaky duration=30"
  • 指定时间sbt clean "flaky times=30"
  • 直到第一次失败sbt clean "flaky firstFail"

此插件的优点是故障的汇总,历史趋势以及在管道中添加片状测试检测的可能性。

答案 3 :(得分:0)

在我看来,它并不特别适用于SBT或任何其他构建管理工具。这没有内置的SBT功能。您必须构建一个,但它远不是SBT提供的 - 构建配置管理。点击导致构建/测试失败的情况可能需要相当长的时间。这是非常不可预测的。

当您的测试失败时,表示测试无法通过。该错误应告诉您它们用于改进测试的内容。

ScalaCheck: Property-based testing for Scala可能会有所帮助。