如何让SBT仅重新运行失败的测试

18

有没有办法让SBT只重新运行上次测试套件中失败的测试?例如,如果我运行sbt test,并且其中有20个测试,其中3个测试失败,是否可以运行任何命令来让SBT只重新运行这3个失败的测试?

具体而言,我正在使用Scala Test和Scala Check来运行通过SBT运行的测试。


3
请尝试使用test-quick命令。 http://www.scala-sbt.org/0.12.4/docs/Detailed-Topics/Testing.html#test-quick - maks
似乎这对于ScalaCheck测试有效,但对于Scala Test测试则无效。 - Christopher Wells
实际上,我再次尝试了一下,并注意到它只是忽略了所有的ScalaCheck测试事件,即使是失败的。 - Christopher Wells
1个回答

18

3
运行sbt testQuick无法正常工作,因为当一组Scala Test测试中至少有一个测试失败时,它会重新运行所有测试。此外,它还会忽略所有的ScalaCheck测试,无论它们是否失败。 - Christopher Wells
4
我认为在不运行整个测试套件的情况下重新运行所有失败的测试是不可能的。同时,您需要在ScalaTest中执行ScalaCheck测试,以便随ScalaTests一起重新运行这些测试。以下链接是如何实现这一点的良好示例:http://sanj.ink/posts/2016-07-06-how-to-run-scalacheck-from-scalatest-and-generate-html-reports.html。 - Cameron Meyer
我使用的是sbt版本1.3.3,而sbt testQuick在我的情况下并没有起作用。成功的方法是前往sbt shell,并使用测试类的名称运行testOnly。例如:testOnly clients.MyClientSpec - caytekin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接