6

scalacheck を使用したプロパティ ベースのテストを使用して、自分の scala プログラムをテストしたいと考えています。私が書いた :

class MyProperties extends PropSpec with PropertyChecks {
    property("My property") {
        val myProperty: org.scalacheck.Prop = new MyProperty
        // some code I need to set myProperty
        myProperty.check
    }
}

しかし、ScalaTest を使用してこのクラスを実行すると、 Console が表示されるため、これは間違っているようです。

Run starting. Expected test count is: 1
MyProperties:

! Falsified after 51 passed tests.
> ARG_0: myGeneratedArgument
- My property
Run completed in 1 second, 623 milliseconds.
Total number of tests run: 1
Suites: completed 1, aborted 0
Tests: succeeded 1, failed 0, canceled 0, ignored 0, pending 0
All tests passed.

問題は、私のプロパティが改ざんされているのに、テストに合格!?! 誰かが私のコードの何が問題なのか見ていますか?

ありがとう...

編集: myProperty.check の代わりに myProperty を呼び出そうとしましたが、これはあまり良くありません。この方法では、ジェネレーターが無視されているように見えます (100 ではなく 1 つのテストのみが起動されます)。

4

2 に答える 2

2

最終的に、Scalatest で考慮されるテストの書き方を見つけました。PropertyChecks の代わりに Checkers Trait を使用しました。

class MyProperties extends PropSpec with Checkers {
    property("My property") {
        val myProperty: org.scalacheck.Prop = new MyProperty
        // some code I need to set myProperty
        Checkers.check(myProperty)
    }
}

これが最善の書き方であるかどうかはわかりませんが、私が望んでいたものは得られました。ローカル:

*** FAILED ***
  GeneratorDrivenPropertyCheckFailedException was thrown during property evaluation.
   (MyProperties.scala:175)
    Falsified after 0 successful property evaluations.
    Location: (MyProperties.scala:175)
    Occurred when passed generated values (
      arg0 = myGeneratedArgument
    )

そして最後に :

Run completed in 4 seconds, 514 milliseconds.
Total number of tests run: 1
Suites: completed 1, aborted 0
Tests: succeeded 0, failed 1, canceled 0, ignored 0, pending 0
*** 1 TESTS FAILED ***

この提案を評価していただける方がいらっしゃれば幸いです^^

于 2013-11-22T14:54:24.413 に答える
1

ScalaTest から、Checkers または PropertyChecks を使用する必要があります。従来の ScalaCheck プロパティを実行していて、そのように見える場合は、チェッカーを使用する必要があります (発見したように)。追加する唯一のことは、Checkers.check の代わりに check と言うことができるということです。

class MyProperties extends PropSpec with Checkers {
    property("My property") {
        val myProperty: org.scalacheck.Prop = new MyProperty
        // some code I need to set myProperty
        check(myProperty)
    }
}

チェッカーの完全なドキュメントは次のとおりです。

http://doc.scalatest.org/2.0/index.html#org.scalatest.prop.Checkers

于 2013-11-26T15:22:18.890 に答える