如果有时只有失败的测试,我可以请求sbt持续运行测试,直到失败?如何进行持续的测试直到flakey测试失败?
否则,我被卡住的箭头一边看着箭头。 (双关语意外,但膨松)
https://stackoverflow.com/q/22366719/1296806
如果有时只有失败的测试,我可以请求sbt持续运行测试,直到失败?如何进行持续的测试直到flakey测试失败?
否则,我被卡住的箭头一边看着箭头。 (双关语意外,但膨松)
https://stackoverflow.com/q/22366719/1296806
老问题,但刚刚有同样的需要我自己,这里是一个解决方案:sbt将返回非零退出代码,如果你运行一次与测试,所以,一种方式来循环,直到失败是只需看看外壳中的退出代码:
while [ $? -eq 0 ]; do sbt test; done
没有人会对绿色小气。 –
我在{1..100}中为'i做了类似的事情;这样可以很好的不会每次加载SBT,因为这占用了大部分时间,这可以通过使用Ammonite- REPL而不是SBT – einnocent
我的一个班轮:'i = 0; while sbt siteService/test; do echo -e“Count:$ i \ n \ n \ n \ n \ n \ n”; i = $((i + 1) ); sleep 0.2; done; echo $ i' –
在我看来,它并不特别适用于SBT或任何其他构建管理工具。这没有内置的SBT功能。你必须建立一个,但它远不如SBT所提供的 - 建立配置管理。造成构建/测试失败的情况可能需要相当长的时间。这是非常不可预测的。
当您的测试失败时,这意味着有些情况下测试未通过。错误应该告诉你你用什么来改进测试。
我没有downvote争议的建议,sbt不是像'〜compile'这样的交互式工具,直到我得到正确的语法为止。在这里,我要求'〜测试'直到片状测试失败。 –
我遇到了同样的问题,并且我最终将其作为命令实现。
lazy val root = Project("test", file(".")).
settings(commands += Command.command("testUntilFailed") { state =>
"test" :: "testUntilFailed" :: state
})
好处是它会跳过SBT加载。您还可以添加额外的参数或运行testOnly
来测试单个测试。
这应该是公认的答案!运行速度更快 –
@SaadMalik绿色检查意味着“解决了我的问题” Upvotes意味着很好的答案。大多数上涨意味着总体上最好的答案。 –
我为片状测试检测创建了sbt插件:sbt-flaky。您可以运行测试:
sbt clean "flaky duration=30"
,sbt clean "flaky times=30"
sbt clean "flaky firstFail"
。这个插件的优点是故障的汇总,历史趋势和在管道中添加片状测试检测的可能性。
我可以想到的唯一方法,标记你想要的测试并在这个标签 – 4lex1v
上运行'〜testOnly'也许你可以在sbt中定义自己的任务/命令,循环并调用testOnly任务,直到失败? – johanandren
将需要一个命令(不是任务),我相信 –