2014-04-02 1 views
1

ScalaTest에서 내결함성을 구현하는 간단한 방법이 있습니까? 동일한 테스트를 50 번 실행하고 허용 가능한 오류 마진을 주려고합니다. 10 %.ScalaTest : 테스트 실행 50 번

50 개 테스트 중 45 개 테스트가 성공한 경우에만 테스트가 통과됩니다.

답변

4

가장 좋은 방법은 withFixture을 무시하고 실패한 테스트를 특정 경우에 맞는 알고리즘을 사용하여 다시 실행하는 것입니다. 영감을 얻으려면 ScalaTest 자체에서 Retries 특성을 살펴 보시기 바랍니다. Scaladoc은 여기에 있습니다 :

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

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 회까지 재 시도됩니다.