2016-09-02 3 views
0

테스트를 실행하기 위해 specs2를 사용하고 있습니다. 나는 그것이 scalacheck를 달릴 수있게 만들었지 만, 아래에서 (나는 sbt 테스트를 할 때) 반 응 표본을 출력하지 않는다. 이것은 반례없이 거의 쓸모가 대신Specs2는 scalacheck 반올림 샘플을 인쇄하지 않습니까?

import org.specs2.mutable.Specification 

import org.scalacheck.Properties 
import org.scalacheck.Prop 
import org.specs2.ScalaCheck 
import org.specs2.scalacheck.Parameters 
import org.scalacheck.Gen 

class StripeExportSpec extends Specification with ScalaCheck { 
    import StripeExportJob._ 

    //.verbose makes no difference 
    implicit val params = Parameters().setVerbosity(10) 

    val p2: Properties = new Properties("dayIntervals") { 

    val dayEpochs = for { 
     n <- Gen.choose(1l, 500l) 
     m <- Gen.choose(n, 500l) 
    } yield (n*twentyFourHours,m*twentyFourHours) 

    property("aligns start to first parameter") = Prop.forAll(dayEpochs) { x: (Long,Long) => 
     val (a, b) = x 
     val result = dayIntervals(a, b) 
     result.head._1 == a 
    } 

    property("aligns end correctly to 24 hours after b") = Prop.forAll(dayEpochs) { x: (Long,Long) => 
     val (a, b) = x 
     val result = dayIntervals(a, b) 
     result.last._2 == b+twentyFourHours 
    } 

    } 

    //s2"dayIntervals respects ${properties(p2)}" 

    "dayIntervals respects " >> addFragments(properties(p2)) 

} 

내가 가진 전부입니다 : 이것은 당신이 AssertionErrors (또는 속성에 java.lang.Error의 종류를 던질 때 발생 specs2에서 문제를

[info] StripeExportSpec 
[info] 
[info] dayIntervals respects 
[info] 
[error]  ! dayIntervals.aligns start to first parameter 
[error]  java.lang.AssertionError: assertion failed (StripeExport.scala:157) 
[error] com.handy.pipeline.jobs.StripeExportJob$.dayIntervals(StripeExport.scala:157) 
[error] com.handy.pipeline.jobs.StripeExportSpec$$anon$1$$anonfun$2.apply(StripeExportSpec.scala:28) 
[error] com.handy.pipeline.jobs.StripeExportSpec$$anon$1$$anonfun$2.apply(StripeExportSpec.scala:26) 
[error] org.scalacheck.Prop$$anonfun$forAllShrink$1$$anonfun$3.apply(Prop.scala:713) 
[error] org.scalacheck.Prop$$anonfun$forAllShrink$1$$anonfun$3.apply(Prop.scala:713) 
[error] org.scalacheck.Prop$.secure(Prop.scala:457) 
[error] org.scalacheck.Prop$$anonfun$forAllShrink$1.org$scalacheck$Prop$$anonfun$$result$1(Prop.scala:713) 
[error] org.scalacheck.Prop$$anonfun$forAllShrink$1$$anonfun$4.apply(Prop.scala:720) 
[error] org.scalacheck.Prop$$anonfun$forAllShrink$1$$anonfun$4.apply(Prop.scala:720) 
[error] org.scalacheck.Prop$$anonfun$forAllShrink$1.getFirstFailure$1(Prop.scala:720) 
[error] org.scalacheck.Prop$$anonfun$forAllShrink$1.shrinker$1(Prop.scala:730) 
[error] org.scalacheck.Prop$$anonfun$forAllShrink$1.apply(Prop.scala:752) 
[error] org.scalacheck.Prop$$anonfun$forAllShrink$1.apply(Prop.scala:707) 
[error] org.scalacheck.Prop$$anonfun$apply$5.apply(Prop.scala:292) 
[error] org.scalacheck.Prop$$anonfun$apply$5.apply(Prop.scala:291) 
[error] org.scalacheck.PropFromFun.apply(Prop.scala:22) 
[error] org.scalacheck.Test$.org$scalacheck$Test$$workerFun$1(Test.scala:294) 
[error] org.scalacheck.Test$$anonfun$3.apply(Test.scala:323) 
[error] org.scalacheck.Test$$anonfun$3.apply(Test.scala:323) 
[error] org.scalacheck.Platform$.runWorkers(Platform.scala:40) 
[error] org.scalacheck.Test$.check(Test.scala:323) 
[error] com.handy.pipeline.jobs.StripeExportSpec.check(StripeExportSpec.scala:14) 
[info] 
[error]  ! dayIntervals.aligns end correctly to 24 hours after b 
[error]  java.lang.AssertionError: assertion failed (StripeExport.scala:157) 
[error] com.handy.pipeline.jobs.StripeExportJob$.dayIntervals(StripeExport.scala:157) 
[error] com.handy.pipeline.jobs.StripeExportSpec$$anon$1$$anonfun$5.apply(StripeExportSpec.scala:34) 
[error] com.handy.pipeline.jobs.StripeExportSpec$$anon$1$$anonfun$5.apply(StripeExportSpec.scala:32) 
[error] org.scalacheck.Prop$$anonfun$forAllShrink$1$$anonfun$3.apply(Prop.scala:713) 
[error] org.scalacheck.Prop$$anonfun$forAllShrink$1$$anonfun$3.apply(Prop.scala:713) 
[error] org.scalacheck.Prop$.secure(Prop.scala:457) 
[error] org.scalacheck.Prop$$anonfun$forAllShrink$1.org$scalacheck$Prop$$anonfun$$result$1(Prop.scala:713) 
[error] org.scalacheck.Prop$$anonfun$forAllShrink$1$$anonfun$4.apply(Prop.scala:720) 
[error] org.scalacheck.Prop$$anonfun$forAllShrink$1$$anonfun$4.apply(Prop.scala:720) 
[error] org.scalacheck.Prop$$anonfun$forAllShrink$1.getFirstFailure$1(Prop.scala:720) 
[error] org.scalacheck.Prop$$anonfun$forAllShrink$1.shrinker$1(Prop.scala:730) 
[error] org.scalacheck.Prop$$anonfun$forAllShrink$1.apply(Prop.scala:752) 
[error] org.scalacheck.Prop$$anonfun$forAllShrink$1.apply(Prop.scala:707) 
[error] org.scalacheck.Prop$$anonfun$apply$5.apply(Prop.scala:292) 
[error] org.scalacheck.Prop$$anonfun$apply$5.apply(Prop.scala:291) 
[error] org.scalacheck.PropFromFun.apply(Prop.scala:22) 
[error] org.scalacheck.Test$.org$scalacheck$Test$$workerFun$1(Test.scala:294) 
[error] org.scalacheck.Test$$anonfun$3.apply(Test.scala:323) 
[error] org.scalacheck.Test$$anonfun$3.apply(Test.scala:323) 
[error] org.scalacheck.Platform$.runWorkers(Platform.scala:40) 
[error] org.scalacheck.Test$.check(Test.scala:323) 
[error] com.handy.pipeline.jobs.StripeExportSpec.check(StripeExportSpec.scala:14) 

답변

1

이. .. 3.8.4-20160905063548-8470e96에서 해결

또한,이 규격을 사용하고 있기 때문에 당신이 ScalaCheck Properties를 사용할 필요가 없습니다 당신은 쓸 수 있습니다 :

"dayIntervals" >> { 

    "aligns start to first parameter" >> Prop.forAll(dayEpochs) { x: (Long,Long) => 
    val (a, b) = x 
    val result = dayIntervals(a, b) 
    result.head._1 === a 
    } 

    // another way of using generators 
    "aligns end correctly to 24 hours after b" >> prop { x: (Long,Long) => 
    val (a, b) = x 
    val result = dayIntervals(a, b) 
    result.last._2 === b+twentyFourHours 
    }.setGen(dayEpochs) 

} 

val dayEpochs = for { 
    n <- Gen.choose(1l, 500l) 
    m <- Gen.choose(n, 500l) 
} yield (n*twentyFourHours,m*twentyFourHours) 
+0

감사합니다. 나중에 테스트 해 보겠습니다. 나는 벌거 벗은 scalacheck로 떨어졌다. – Marcin