2016-08-01 6 views
2

ScalaCheckプロパティがデフォルトの100回ではなく500回実行されていることを確認しようとしています。私はこれを構成するのに問題があります。私は実際にこのテストを実行するとScalaCheck固有の最小限のプロパティのテスト

class BlockSpec extends Properties("BlockSpec") with BitcoinSLogger { 

    val myParams = Parameters.default.withMinSuccessfulTests(500) 
    override def overrideParameters(p: Test.Parameters) = myParams 

    property("Serialization symmetry") = 
    Prop.forAll(BlockchainElementsGenerator.block) { block => 
    logger.warn("Hex:" + block.hex) 
    Block(block.hex) == block 
    } 
} 

しかし、それは唯一の100回のテストが正常に渡さ言う

EDIT:

$ sbt 
[info] Loading project definition from /home/chris/dev/bitcoins-core/project 
[info] Set current project to bitcoin-s-core (in build file:/home/chris/dev/bitcoins-core/) 
> test-only *BlockSpec* 
[info] + BlockSpec.Serialization symmetry: OK, passed 100 tests. 
[info] Elapsed time: 1 min 59.775 sec 
[info] ScalaCheck 
[info] Passed: Total 1, Failed 0, Errors 0, Passed 1 
[info] ScalaTest 
[info] Run completed in 2 minutes. 
[info] Total number of tests run: 0 
[info] Suites: completed 0, aborted 0 
[info] Tests: succeeded 0, failed 0, canceled 0, ignored 0, pending 0 
[info] No tests were executed. 
[info] Passed: Total 1, Failed 0, Errors 0, Passed 1 
[success] Total time: 123 s, completed Aug 1, 2016 11:36:17 AM 
> 

どのように私は実際に私の財産にこれを渡すのですか?

+0

これはsbtから呼び出すと思いますか?このプロパティをどのように呼び出すか教えてください。おそらくREPLから 'property.check'を試してみるでしょうか? – jopasserat

+0

私はsbtを使用しますが、私はOP –

+0

にコマンドを追加します。コンソールから実行すると、100個のテストだけが 'scala> res1._2.check + OK、100回のテストに合格しました。 –

答えて

1

私が理解する限り、テストパラメータは2つのレベルで指定でき、通信していないようです。あなたがやろうとしているよう

最初のオプションは、プロパティ内にある:

import org.scalacheck.Properties 
import org.scalacheck.Test.{ TestCallback, Parameters } 
import org.scalacheck.Prop.{ forAll, BooleanOperators } 
import org.scalacheck.Test 

class TestFoo extends Properties("BlockSpec") { 

    override def overrideParameters(p: Parameters) = 
    p.withMinSuccessfulTests(1000000) 

    property("Serialization symmetry") = forAll { n: Int => 
    (n > 0) ==> (math.abs(n) == n) 
    } 

} 

これは、限り、あなたは財産上の.checkを呼び出さないよう影響はありません。 sbtシェルからでも、クラス内から直接でもかまいません。

は間違いなく達成するための簡単な方法があります
name := "scalacheck-demo" 

scalaVersion := "2.11.5" 

libraryDependencies += "org.scalacheck" %% "scalacheck" % "1.12.2" % "test" 

testOptions in Test += Tests.Argument(TestFrameworks.ScalaCheck, "-maxSize", "5", "-minSuccessfulTests", "33", "-workers", "1", "-verbosity", "1") 
+0

これはテストごとまたはプロパティごとの設定を許可していないようです? – nafg

0

:今、あなたはsbt:testターゲットを呼び出すとき、あなたが(hereから取られた)オプションbuild.sbtでプレイしていると思われるテストの実行の数に影響を与えたい場合は

どのような種類のグローバルテスト設定よりも優先されます:

class SampleTest extends FlatSpec 
    with Matchers with GeneratorDrivenPropertyChecks { 

    it should "work for a basic scenario" in { 
    // This will require 500 successful tests to succeed 
    forAll(minSuccessful(500)) { (d: String) => 
     whenever (d.nonEmpty) { 
     d.length shouldBe > 0 
     } 
    } 
    } 
} 
+0

ScalaTestを使用しているようですか? –

+0

こんにちは@ChrisStewartそうですね、DSLはScalaTest特有のものではなく、少なくともforAll側ではありません。 – flavian

+0

'Prop.forAll()'関数で明示的に生成されたジェネレータでどのように動作しますか? –

関連する問題