2014-04-02 127 views
1

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

在上述情况下,只有50个测试中的45个测试成功,测试才会通过。

回答

2

这里是一个除了Bill Venners提出的解决方案。我需要为闪烁/不稳定测试执行一些重试。

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)中并用taggedAs Retryable每个测试。需要时的这种测试将重试4次。