ScalaTest:运行测试50次

时间:2014-04-02 00:38:33

标签: scala scalatest

ScalaTest中是否有一种简单的方法来实现容错?我希望运行相同的测试50次并给它一个可容忍的误差范围,例如10%。

在上述情况下,如果50项测试中有45项成功,测试将通过。

3 个答案:

答案 0 :(得分:6)

最好的方法是覆盖withFixture并使用在特定情况下有意义的任何算法重新运行失败的测试。为了获得灵感,我建议您查看ScalaTest本身的Retries特征。斯卡拉多克在这里:

http://doc.scalatest.org/2.1.0/index.html#org.scalatest.Retries

Retries的实际源代码在这里:

https://github.com/scalatest/scalatest/blob/master/src/main/scala/org/scalatest/Retries.scala

答案 1 :(得分:2)

Scala-check可能是一个很好的解决方案。 http://www.scalacheck.org/

答案 2 :(得分:2)

以下是Bill Venners提议的解决方案的补充。我需要为闪烁/不稳定测试执行一些重试。

d.setVar

重试(val retries = 4 override def withFixture(test: NoArgTest) = { if (isRetryable(test)) withFixture(test, retries) else super.withFixture(test) } def withFixture(test: NoArgTest, count: Int): Outcome = { val outcome = super.withFixture(test) outcome match { case Failed(_) | Canceled(_) => if (count == 1) super.withFixture(test) else withFixture(test, count - 1) case other => other } } )的扩展测试类以及with Retries的每个测试。需要时进行的此类测试最多可重试4次。