問題タブ [scalacheck]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
unit-testing - Scalacheck が失敗したケースを適切に報告しない
私は次の仕様を書きました
その範囲は非常に明確です。
テストは成功しましたが、(ステートメントの 1 つをコメントアウトするなどしてif
) 強制的に失敗させた場合、ScalaCheck はエラーを正しく報告しますが、メッセージには、命題の評価に使用された実際の値が正しく記載されていません。より具体的には、次のようになります。
見えるところにarg0 = "" // 4 shrinks
は値が表示されません。
ケースを確認するために簡単なステートメントを追加しようとしprintln
ましたが、出力がトリミングされているようです。私はこのようなものを手に入れます
解決
eclipse - PropspecおよびPropertyCheckでscalacheckを使用するときに、ScalaTestがテスト結果を正しく報告する方法は?
scalacheck を使用したプロパティ ベースのテストを使用して、自分の scala プログラムをテストしたいと考えています。私が書いた :
しかし、ScalaTest を使用してこのクラスを実行すると、 Console が表示されるため、これは間違っているようです。
問題は、私のプロパティが改ざんされているのに、テストに合格!?! 誰かが私のコードの何が問題なのか見ていますか?
ありがとう...
編集: myProperty.check の代わりに myProperty を呼び出そうとしましたが、これはあまり良くありません。この方法では、ジェネレーターが無視されているように見えます (100 ではなく 1 つのテストのみが起動されます)。
scala - scalacheck で生成された Tuple 要素に異なる名前でアクセスする
ScalaTest と Scalacheck を併用しています。これが私の怠惰なペアです (Tuples2 の代わりに Gen[(Int, Int)] を結果として取得するため、機能しません。そのため、パターン マッチングを使用できません)。
forAll の 2 つのパラメーターを使用するには、上記の 2 つの値を次のように使用します。
この方法で、1 つの Gen[(Int, Int)] を作成できます。
しかし、その後、名前で要素にアクセスできません。
scalacheck を長く使っている人にとっては簡単な質問かもしれませんが、私は初心者であり、多くの解決策を試したので、この問題を解決するにはどうすればよいでしょうか?
編集: 1つの解決策は、いつでも使用できます:
と:
ただし、生成された開始と終了のすべてが条件を満たさない場合、テストが失敗する可能性があります。したがって、それが最善の解決策とは言えません (少なくとも良い解決策です)。
scala - Gen.choose() と .oneOf() の出力
以下のテストを実行するGen()
と、両方のprintln
ステートメントが出力されます。
ScalaCheck docsに基づいて、出力は次のようになると予想していました。
(数、数)
「こんにちは」または「ワールド」
scala - scalac が ScalaTest テストで間違った forAll メソッドを検出する
を拡張する ScalaTest 2 クラスがGeneratorDrivenPropertyChecks
あり、間接的に and も拡張FeatureSpec
しMatchers
ます (これらの 2 つのクラスを拡張する私が書いたトレイトを介して)。その中に次のようなコードがあります。
scalac が次のように言うため、これはコンパイルに失敗します。
少なくとも Eclipse Scala IDE によれば、コンパイラは "forAll" をこのメソッドを意味するものとして解決していることがわかりGeneratorDrivenpropertyChecks
ます。
forAll
ここで使用したい方法ではありません。
これは ScalaTest のバグですか (つまり、2 つのメソッドに両方の名前を付けるべきではないということforAll
です)?
そして、正しいメソッドをどのように呼び出す必要がありますか?
scala - クラスの任意の作成
次のようなクラスがあります。
EpidemySimulator クラスでいくつかのプロパティを定義できるように、内部クラス Persons の Arbitrary を追加したいと考えています。コンパニオン オブジェクトは、Person 型のオブジェクトを生成するプロパティを定義するために必要な暗黙的なジェネレーターを定義できると考えました。
Arbitrary[sim.Person]
私の理解では、(暗黙的に提供される)特定のものを作成する暗黙的な関数を提供した場合、のsim:EpidemySimulator
ようにプロパティを作成できるはずpropertyOne
です。ただし、プロパティでコンパイラエラーが発生します
私が間違っていることについてのアイデア。最終的にできるようにしたい:
scalacheck - ScalaCheck コレクション ジェネレーター
私は Scalacheck を使用しており、特定のサイズのコレクションを生成したいと考えています。そのための特別な関数が scalaCheck にありGen.listOfN(size, Gen[T])
ます。メソッドでforAll
生成されたコレクションのサイズを出力すると、常に定義されたサイズになるとは限りません。実際には、最初の試行で指定されたサイズしかありません。たとえば、サイズ 6 --> 最初の試行ではコレクションのサイズが 6 で、2 回目の試行ではサイズが 3 しかありません。何が間違っていますか?
scala - 8 個を超えるパラメーターを使用して関数をテストする
ScalaCheck API は、最大 8 つのパラメーターを持つ関数からプロパティを作成するための 8 つの forAll メソッドを定義します。8 つ以上のパラメーターを持つ関数をテストすることはできますか?