問題タブ [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.

0 投票する
1 に答える
2046 参照

unit-testing - Scalacheck が失敗したケースを適切に報告しない

私は次の仕様を書きました

その範囲は非常に明確です。

テストは成功しましたが、(ステートメントの 1 つをコメントアウトするなどしてif) 強制的に失敗させた場合、ScalaCheck はエラーを正しく報告しますが、メッセージには、命題の評価に使用された実際の値が正しく記載されていません。より具体的には、次のようになります。

見えるところにarg0 = "" // 4 shrinksは値が表示されません。

ケースを確認するために簡単なステートメントを追加しようとしprintlnましたが、出力がトリミングされているようです。私はこのようなものを手に入れます

解決

0 投票する
2 に答える
1014 参照

eclipse - PropspecおよびPropertyCheckでscalacheckを使用するときに、ScalaTestがテスト結果を正しく報告する方法は?

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

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

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

ありがとう...

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

0 投票する
1 に答える
876 参照

scala - scalacheck で生成された Tuple 要素に異なる名前でアクセスする

ScalaTest と Scalacheck を併用しています。これが私の怠惰なペアです (Tuples2 の代わりに Gen[(Int, Int)] を結果として取得するため、機能しません。そのため、パターン マッチングを使用できません)。

forAll の 2 つのパラメーターを使用するには、上記の 2 つの値を次のように使用します。

この方法で、1 つの Gen[(Int, Int)] を作成できます。

しかし、その後、名前で要素にアクセスできません。

scalacheck を長く使っている人にとっては簡単な質問かもしれませんが、私は初心者であり、多くの解決策を試したので、この問題を解決するにはどうすればよいでしょうか?

編集: 1つの解決策は、いつでも使用できます:

と:

ただし、生成された開始と終了のすべてが条件を満たさない場合、テストが失敗する可能性があります。したがって、それが最善の解決策とは言えません (少なくとも良い解決策です)。

0 投票する
1 に答える
720 参照

scala - Gen.choose() と .oneOf() の出力

以下のテストを実行するGen()と、両方のprintlnステートメントが出力されます。

ScalaCheck docsに基づいて、出力は次のようになると予想していました。

(数、数)

「こんにちは」または「ワールド」

0 投票する
1 に答える
1524 参照

scala - scalac が ScalaTest テストで間違った forAll メソッドを検出する

を拡張する ScalaTest 2 クラスがGeneratorDrivenPropertyChecksあり、間接的に and も拡張FeatureSpecMatchersます (これらの 2 つのクラスを拡張する私が書いたトレイトを介して)。その中に次のようなコードがあります。

scalac が次のように言うため、これはコンパイルに失敗します。

少なくとも Eclipse Scala IDE によれば、コンパイラは "forAll" をこのメソッドを意味するものとして解決していることがわかりGeneratorDrivenpropertyChecksます。

forAllここで使用したい方法ではありません。

これは ScalaTest のバグですか (つまり、2 つのメソッドに両方の名前を付けるべきではないということforAllです)?

そして、正しいメソッドをどのように呼び出す必要がありますか?

0 投票する
1 に答える
489 参照

scala - クラスの任意の作成

次のようなクラスがあります。

EpidemySimulator クラスでいくつかのプロパティを定義できるように、内部クラス Persons の Arbitrary を追加したいと考えています。コンパニオン オブジェクトは、Person 型のオブジェクトを生成するプロパティを定義するために必要な暗黙的なジェネレーターを定義できると考えました。

Arbitrary[sim.Person]私の理解では、(暗黙的に提供される)特定のものを作成する暗黙的な関数を提供した場合、のsim:EpidemySimulatorようにプロパティを作成できるはずpropertyOneです。ただし、プロパティでコンパイラエラーが発生します

私が間違っていることについてのアイデア。最終的にできるようにしたい:

0 投票する
1 に答える
353 参照

scalacheck - ScalaCheck コレクション ジェネレーター

私は Scalacheck を使用しており、特定のサイズのコレクションを生成したいと考えています。そのための特別な関数が scalaCheck にありGen.listOfN(size, Gen[T])ます。メソッドでforAll生成されたコレクションのサイズを出力すると、常に定義されたサイズになるとは限りません。実際には、最初の試行で指定されたサイズしかありません。たとえば、サイズ 6 --> 最初の試行ではコレクションのサイズが 6 で、2 回目の試行ではサイズが 3 しかありません。何が間違っていますか?

0 投票する
1 に答える
118 参照

scala - 8 個を超えるパラメーターを使用して関数をテストする

ScalaCheck API は、最大 8 つのパラメーターを持つ関数からプロパティを作成するための 8 つの forAll メソッドを定義します。8 つ以上のパラメーターを持つ関数をテストすることはできますか?