2012-09-17 2 views
1

specs2는 설정/teardown 코드에서 예제를 래핑 할 수 있도록 Before, After, Around 등과 같은 특성을 가지고 있습니다.ScalaCheck의 전/후/주위.

ScalaCheck 속성, 즉 ScalaCheck에서 테스트 할 각 값 또는 값 집합의 "반복"마다 테스트 인프라를 설정하고 해체하는 것을 지원할만한 것이 있습니까?

Specs2의 다양한 Before, After, Around 특성은 specs2 결과 인스턴스를 반환하거나 던지는 데 디자인 된 것으로 보이며 Prop은 결과가 아닙니다.

+0

문제는이다 , 다른쪽으로 돌아가는 사람은 없습니다. –

답변

2

최신 1.12.2-SNAPSHOT에서 수정되었습니다. 이제 다음과 같이 쓸 수 있습니다 :

import org.specs2.ScalaCheck 
import org.specs2.mutable.{Around, Specification} 
import org.specs2.execute.Result 

class TestSpec extends Specification with ScalaCheck { 
    "test" >> prop { i: Int => 
    around(i must be_>(1)) 
    } 

    val around = new Around { 
    def around[T <% Result](t: =>T) = { 
     ("testing a new Int").pp 
     try { t } 
     finally { "done".pp } 
    } 
    }  
} 

그리고이 속성의 "본문"앞뒤에 코드가 실행됩니다.

또한 한 단계 더 가서 소품을 암시 around에 전달하는 지원 방법을 만들 수 있습니다 Prop`에`Result``에서 암시 적 변환이 있지만,

class TestSpec extends Specification with ScalaCheck { 
    "test" >> propAround { i: Int => 
    i must be_>(1) 
    } 

    // use any implicit "Around" value in scope 
    def propAround[T, R](f: T => R) 
         (implicit a: Around, 
         arb: Arbitrary[T], shrink: Shrink[T], 
         res: R => Result): Result = 
    prop((t: T) => a(f(t))) 

    implicit val around = new Around { 
    def around[T <% Result](t: =>T) = { 
     ("testing a new Int").pp 
     try { t } 
     finally { "done".pp } 
    } 
    } 
} 
+0

고마워요! 그러나 제공 한 첫 번째 코드 샘플은 sonatype의 최신 스냅 샷으로 컴파일되지 않습니다. git에서'sbt'를 사용하여 specs2를 컴파일하려고 시도했지만'[error] {file :/home/robin/git/specs2/project /} plugins/* : update : sbt.ResolveException : 해결되지 않은 종속성 : com.jsuereth # xsbt -gpg-plugin; 0.6 : not found [error] 해결되지 않은 의존성 : me.lessis # ls-sbt; 0.1.2 : not found' –

+0

그런데, 나는 스칼라 2.9.1을 사용하고 있습니다. –

+1

이런 종류의 플러그인 문제는 실제로 스칼라 버전 불일치로 인한 것입니다. 빌드 파일에서 플러그인을 제거하면됩니다. 어쨌든 나는 스칼라 2.9.1을위한 1.12.2-SNAPSHOT을 출판 했으므로 자신을 컴파일 할 필요가 없다. – Eric