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

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

c# - C# を使用して FsCheck でランダムな文字列を生成する

FsCheck を C# テスト コードに (最初のステップとして) 徐々に統合したいと考えています。

入力データの一部をランダムに生成したいと思います。

これは、ランダムな文字列を生成する方法です。

複数回呼び出すと、毎回同じ文字列を取得します。

毎回異なる文字列を取得したり、このコードを正しく記述したりするにはどうすればよいですか?

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

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) 次のようなテスト (ユーザー操作) を作成できる可能性があるため、大きな利益をもたらします。

  1. 作成
  2. 作成後、パイプラインを進めます
  3. 前に戻る (許可されている場合と許可されていない場合はいつですか? 例: 有料注文はおそらく購入承認ステップに戻ることはできません)
  4. パイプラインの途中で (チェックなど) を追加/削除する
  5. 同じ C と P の Match を 2 回 (たとえば、PLINQ と同時に) 作成するように依頼した場合、重複が作成されますか? (ユーザーに返されるメッセージは何ですか?)

私が苦労していること:

  1. FsCheck のテスト データはどのように生成すればよいですか? 正しい方法は、Match を作成するための C と P の個別の可能な組み合わせをすべて定義し、それらをモデルベースのテストの「事前条件」にし、事後条件を Match を作成するかどうかにすることだと思います、...
  2. それは本当に正しいアプローチですか?ランダム化されたプロパティ ベースのテスト ツールとしては決定論的すぎると感じます。このような状況で FsCheck を使用するのは過剰設計ですか? すると、シード値を無視して決定論的なテスト データのストリームを返すデータ ジェネレーターを持っているかのようになります。
  3. この時点で、FsCheck ジェネレーターは、xUnit.net や AutoPOCO のようなものを使用することと何か違いがありますか?
0 投票する
2 に答える
1680 参照

c# - C# の FsCheck: 同じ形状の 2 次元配列のリストを生成する

ビデオ分析用のコードを書いているとしましょう。以下は、Video クラスの簡略化されたバージョンです。

Arbitrary<Video>を作成して登録する方法を教えてください。その任意のシュリンカーを作成するにはどうすればよいですか?

これを試してみましたが、適用の仕組みを理解できませんでした:

これを試しましたが、リストのジェネレーターをここに接続できませんでした:

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

f# - F# での "==>" 構文の意味

F# で次のコードを検討してください。

その後

そして最後に

私が理解できないのは==>、最後の行の意味です!!!

それは何ですか?

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

f# - この式は string 型であると予想されていましたが、ここでは Gen 型です

私はこの記録を持っています:

このレコードのジェネレーターを作成するために、次のコードを試しました。

問題はName= generateName;次のとおりです。エラーが発生しています:

このエラーは、最後の残りの行に存在します。

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

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 個のテストに合格しました。

私はこれを正しく読んでいますか?

私は何が欠けていますか?

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

unit-testing - RGR 手法を使用する場合、プロパティ テストは単体テストと一緒に実行する必要がありますか?

RGR 手法を使用する場合、プロパティ テストは単体テストと一緒に実行する必要がありますか?

RGR:赤 -> 緑 -> リファクタリング

私が持っている単体テストが 18 ミリ秒で実行されることに気付きました。

ただし、同じメソッドのプロパティ テストには 215 ミリ秒かかります。

したがって、私のプロパティ テストの実行には 1/4 秒かかります。

さらに、これは単純なプロパティ テストの 1 つにすぎません。

プロパティテストを実行するための効果的な方法は何ですか?

チェックインだけ?