問題タブ [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.
scala - ScalaCheckテストを決定論的にする
デバッグを容易にするために、specs2テストスイートのScalaCheckプロパティテストを一時的に決定論的にしたいと思います。現在、テストスイートを再実行するたびに異なる値が生成される可能性があります。これは、観察された動作の変化がコードの変更によるものなのか、生成された異なるデータによるものなのかわからないため、デバッグを苛立たせます。
これどうやってするの?ScalaCheckで使用されるランダムシードを設定する公式の方法はありますか?
sbt
テストスイートの実行に使用しています。
ボーナスの質問: ScalaCheckで使用されるランダムシードを印刷して、非決定論的なテスト実行でも再現できるようにする公式の方法はありますか?
specs2 - 置換なしの ScalaCheck 選択
Gen[A]
同じオブジェクトを 2 回返さない using ScalaCheckを作成するにはどうすればよいですか?
同じオブジェクトを繰り返し選択できるため、機能しません。
私は specs2 で変更可能な仕様を書いています。これを行いたい理由は、テスト対象のシステムの動作が、ある意味で各オブジェクトを一度だけ「使用」できるようにする必要があるためです。
編集:「同じ」とは、 に従って同じことを意味し==
、オブジェクトは実際には文字列であるため、毎回同じ文字列を作成することはできません。
scala - spec2 の失敗した Scalacheck プロパティから正確に失敗した一致を特定する
sbt
コマンドを使用して、から specs2 テスト スイートを実行していtest
ます。ScalaCheck プロパティが失敗すると、specs2 の一致が失敗したコードのファイル名と行番号が表示されるだけです。これは、頻繁に行う一般的なタイプのチェックを実行するユーティリティ メソッドである場合にはあまり役に立ちません。 . スタック トレースの方がよいでしょう。
sbt でコマンドを試しましたlast
が、探しているスタック トレースが表示されません。唯一のスタック トレースlast
表示は、次の一般的なものです。
また、java.util.logging プロパティ ファイルで FINEST ログ レベルを有効にしています。
今のところ、Eclipse デバッガーを使用してこの問題を回避していますが、場合によっては不必要に重いものになります。
unit-testing - Scalacheck、単体テスト マルチプロセス アルゴリズム
私は現在、MPJ-Express (Java MPI バリアント) を使用して、マルチプロセスの並列アルゴリズム用の Scala フレームワークを開発しています。
MPJ-Express、および基本的にすべての MPI バリアントは、同じプログラムで多くのプロセスを開始することによって機能します。実行時にプロセスを制御できないため (私のプログラムはプロセスを生成しません)、次の理由により、標準の単体テスト フレームワークを使用できません。
すべてのプロセスが実行後に結果のローカル コピーを所有するわけではありません (理想的には、結果は任意のルート プロセスで収集する必要があります)。
標準出力に対する制御の欠如。単一のプロセスからのみ出力を取得することは容易ではありません。
- フロー制御の欠如。単一プログラムの複数データ アルゴリズムを許可するには、すべてのプロセスが同時に同じテストに入る必要があります。
番号 2 が主な問題です。番号 3 は期待どおりに機能する可能性があり、番号 1 は追加の通信操作で修正できます。誰かが実際の経験を持っているか、マルチプロセスアルゴリズムのより良い単体テスト戦略を知っていますか?
編集
現在、 scalacheckを使用して次のコードを実行できているようです。
上記のコードは、scala-println メソッドを p=0 以外のすべてのプロセスの nop 操作に再ルーティングします。ルート プロセスのみが結果を検証できるように、並列メソッドを使用してテスト スイートを実行できるはずです。上記により、次の出力が得られます。
scala - scalacheck関数の2つの暗黙の取得
私はscalacheckを使用していて、現在ジェネリックプログラミングのスープの真っ最中です。公式ガイドはこの例を示しています:
一方、私のテストでは、Array[Array[T]]型の行列が必要です。次の関数を試してみました。
ここで、私はトラブルに遭遇します。コンパイラは言う:
この行に複数のマーカーがあります-メソッドcontainerOfNの引数が不十分です:(暗黙のb:org.scalacheck.util.Buildable [T、Array])org.scalacheck.Gen[Array[T]]。不特定の値パラメータb。-パラメータbの暗黙的な値が見つかりませんでした:org.scalacheck.util.Buildable [T、Array]-パラメータbの暗黙的な値が見つかりませんでした:org.scalacheck.util.Buildable [T、Array]-メソッドの引数が不足していますcontainerOfN:(暗黙のb:org.scalacheck.util.Buildable [T、Array])org.scalacheck.Gen[Array[T]]。不特定の値パラメータb。
このようなものは通常、関数に暗黙のパラメーターを追加することで改善されることを理解していますが、私はまだこの作業を行っていません。
例として、ジェネリック配列を構築するときに通常このエラーが発生します。
しかし、私は何が起こっているのか、なぜこれが必要なのかを完全には理解していないのではないかと思います。
誰かが正しい行列関数を作成する方法をscalacheckでの使用例とともに説明できますか?暗黙のクラスマニフェストを使用したシーケンスの構築に関する詳細の完全な説明は大歓迎です!
編集
それでも動作しません。Buildable [Array [T]、Array]には暗黙が必要です...暗黙の引数を1つしか追加できないため、これを取得する方法がわかりません:/
scala - Scalacheck prop タイプの不一致
このエラーに何度か遭遇しました。それはかなり自明です。不一致は、Int である私の ans var で発生しています。私がこれを構築している方法は、構文に関連していると感じていますが、あなたの考えを教えてください:
scala - Scalacheck: ジェネレーターのリストに対応するリストを生成する
のジェネレーターのリストに対応する整数のリストを生成したいと考えていますScalaCheck
。
与えられた に対して、有効なサンプルが になるgens
ジェネレーターを作成したいと思います。これがタプルを使用した最初の試みです。listGen
List(2, 2000, 0, 6)
gens
これは機能しますが、generators( ) のリストが動的に作成され、リストのサイズが固定されていないため、タプルを使用したくありません。リストでそれを行う方法はありますか?
listGen
scalacheck のforAll
プロパティ チェックでlist( ) のジェネレータを使用したい。
これはおもちゃの問題のように見えますが、これは私が直面している実際の問題を再現するスタンドアロンのスニペットを作成するためにできる最善の方法です。
java - Java で *興味深い* 文字列をランダムに生成する
自動単体テストに ScalaCheck を使用しています。そのデフォルトの String ジェネレーター (つまり、デフォルトArbitrary[String]
のインスタンス) は少し強力すぎて、通常、主にサポートしようとしていない文字で構成された判読不能な寄せ集めを生成し、私のシステムはレンダリングすることさえできません。
さらにいくつかのインスタンスを作成することに着手し、Arbitrary[String]
そこにあるものを見つけようとしています。テストに役立つ String クラスの例を次に示します。
- 基本的な多言語プレーン文字列
- アストラルストリングス
- ラテン文字列 (拡張子 a/b を含む)
- フランス語の単語
- 左から右への言語文字列
- 右から左への言語文字列
- 中国語の文章
- 「Web 文字列」 (Web コンテンツの 99.9999% を構成する文字セットから抽出された文字列)
- 想像力を使って ...
これらまたは類似の文字列をランダムに作成できるライブラリはありますか?
scala - scalacheck の解決が成功した後、sbt が「オブジェクト scalacheck はパッケージ org のメンバーではありません」と表示するのはなぜですか?
に以下を追加しましたbuild.sbt
。
sbtcompile
のプロジェクトでは、ログに示されているように、依存関係が正常に解決されています。
ただし、1 つのファイルのコンパイル中に次のエラーが発生します。
この理由は何ですか?
compile
タスク中に sbt が使用しているクラスパスを確認する方法はありますか?
プロジェクトは ScalaIDE で正常にビルドされることに注意してください。(sbteclipse を使用して eclipse.classpath
ファイルを生成します。生成されたファイル.classpath
には適切な scalacheck エントリがあります。)
scala - Scala 2.9.2 で scala runner のクラスパスから scalacheck を除外する
scalacheck
jar は、Scala 2.9.2 の標準ディストリビューションのlib
ディレクトリーに、標準の scala ランタイム クラス (例: ) と共に誤って含まれていましたscala-library.jar
。これは発見され、以降の Scala ディストリビューションで修正されました。
scala 2.9.2 インタープリターを実行して の別のバージョンを使用したいのですがscalacheck
、 のバージョンを無視するようにできませんlib
。
私は試した:
これらはすべてscalacheck.jar
. からjarを削除する以外に、クラスパスlib
からjarを除外してインタープリターを実行する方法はありますか?lib