問題タブ [fscheck]
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.
c# - C# を使用して FsCheck でランダムな文字列を生成する
FsCheck を C# テスト コードに (最初のステップとして) 徐々に統合したいと考えています。
入力データの一部をランダムに生成したいと思います。
これは、ランダムな文字列を生成する方法です。
複数回呼び出すと、毎回同じ文字列を取得します。
毎回異なる文字列を取得したり、このコードを正しく記述したりするにはどうすればよいですか?
c# - FsCheck を使用したテストへのアプローチ
私は FsCheck とランダム プロパティ ベースのテストへのパラダイム シフトを試みています。列挙しきれないほど多くのテスト ケースを含む複雑なビジネス ワークフローがあり、ビジネス ロジックは新しい機能が追加されて移動するターゲットです。
背景: マッチメイキングは、エンタープライズ リソース プランニング (ERP) システムで非常に一般的な抽象概念です。注文処理、サプライ チェーン ロジスティクスなど
例: C と P が与えられた場合、2 つが一致するかどうかを判断します。任意の時点で、一部の P は決してMatch-able ではなく、一部の C は決してMatch-able ではありません。それぞれに、試合の対象と見なされるかどうかを示すステータスがあります。
ボーナス: 単純な「ブロック マッチ」ステータスを超えて、C と P にはそれぞれ一連のチェックがあります。CがMatch-edであるためにいくつかのチェックが真でなければならず、PがMatch-edであるためにいくつかのチェックが真である必要があり、CのいくつかのチェックがPのチェックに対してクロスチェックされなければなりません。 FsCheck を使用したテストは、(a) 製品に追加された新機能の例であり、(b) 次のようなテスト (ユーザー操作) を作成できる可能性があるため、大きな利益をもたらします。
- 作成
- 作成後、パイプラインを進めます
- 前に戻る (許可されている場合と許可されていない場合はいつですか? 例: 有料注文はおそらく購入承認ステップに戻ることはできません)
- パイプラインの途中で (チェックなど) を追加/削除する
- 同じ C と P の Match を 2 回 (たとえば、PLINQ と同時に) 作成するように依頼した場合、重複が作成されますか? (ユーザーに返されるメッセージは何ですか?)
私が苦労していること:
- FsCheck のテスト データはどのように生成すればよいですか? 正しい方法は、Match を作成するための C と P の個別の可能な組み合わせをすべて定義し、それらをモデルベースのテストの「事前条件」にし、事後条件を Match を作成するかどうかにすることだと思いますが、...
- それは本当に正しいアプローチですか?ランダム化されたプロパティ ベースのテスト ツールとしては決定論的すぎると感じます。このような状況で FsCheck を使用するのは過剰設計ですか? すると、シード値を無視して決定論的なテスト データのストリームを返すデータ ジェネレーターを持っているかのようになります。
- この時点で、FsCheck ジェネレーターは、xUnit.net や AutoPOCO のようなものを使用することと何か違いがありますか?
c# - C# の FsCheck: 同じ形状の 2 次元配列のリストを生成する
ビデオ分析用のコードを書いているとしましょう。以下は、Video クラスの簡略化されたバージョンです。
Arbitrary<Video>
を作成して登録する方法を教えてください。その任意のシュリンカーを作成するにはどうすればよいですか?
これを試してみましたが、適用の仕組みを理解できませんでした:
これを試しましたが、リストのジェネレーターをここに接続できませんでした:
f# - F# での "==>" 構文の意味
F# で次のコードを検討してください。
その後
そして最後に
私が理解できないのは==>
、最後の行の意味です!!!
それは何ですか?
f# - この式は string 型であると予想されていましたが、ここでは Gen 型です
私はこの記録を持っています:
このレコードのジェネレーターを作成するために、次のコードを試しました。
問題はName= generateName;
次のとおりです。エラーが発生しています:
このエラーは、最後の残りの行に存在します。
f# - 単体テストとして実行されたプロパティ テストは、実際には合格しても失敗します
単体テストとして実行しているプロパティ テストは、実際には合格しているものの、失敗しているようです。
コードは次のとおりです。
概要:
テスト名: 2 つの数値を加算すると、結果はパラメーターの順序に依存しないはずです
Test FullName: Tests.Units.2 つの数値を加算すると、結果はパラメーターの順序に依存しないはずです
テスト結果: 失敗
Result StackTrace: at FsUnit.TopLevelOperators.should[a,a](FSharpFunc`2 f, ax, Object y) in d:\GitHub\FsUnit\src\FsUnit.NUnit\FsUnit.fs:line 44
Tests.Units.When で 2 つの数値を追加すると、結果はパラメーター order() に依存してはなりません
結果メッセージ: 予想: 真ですが、そうでした
結果 StandardOutput: OK、100 個のテストに合格しました。
私はこれを正しく読んでいますか?
私は何が欠けていますか?
unit-testing - RGR 手法を使用する場合、プロパティ テストは単体テストと一緒に実行する必要がありますか?
RGR 手法を使用する場合、プロパティ テストは単体テストと一緒に実行する必要がありますか?
RGR:赤 -> 緑 -> リファクタリング
私が持っている単体テストが 18 ミリ秒で実行されることに気付きました。
ただし、同じメソッドのプロパティ テストには 215 ミリ秒かかります。
したがって、私のプロパティ テストの実行には 1/4 秒かかります。
さらに、これは単純なプロパティ テストの 1 つにすぎません。
プロパティテストを実行するための効果的な方法は何ですか?
チェックインだけ?