問題タブ [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 に答える
115 参照

f# - テスト コードを内部としてマークしなくても、内部コードをテストできますか?

テストしたい多くの非公開のものを含む F# ライブラリがあります。現在、アセンブリのパブリック API の一部ではないすべてのコードがマークさinternalれています (具体的には、マークされているモジュールに配置されていますinternal)。を使用しInternalsVisibleToAttributeて、このコードをテスト アセンブリに表示できるようにします。ただし、テスト アセンブリをコンパイルするには、署名に internal 型を使用するすべてのテスト (ほとんどの場合、FsCheck を使用してテスト入力を自動生成するため) も internal としてマークする必要があります (これは、各テストに適用する必要があります)。内部モジュールは xunit によって検出されないため)。さらに、FsCheck 生成専用に使用されるすべての型 (たとえばtype ValidCustomer = ValidCustomer of CustomerCustomerも内部としてマークする必要があり、FsCheck は内部タイプを作成するときにスタックするように見えるため、テストは実行されません。

内部型に署名が依存するすべてのテストを internal としてマークすることなく、(別のテスト アセンブリから) 内部 F# コードをテストする方法はありますか? 現時点では、元のコードの内部に何も作成しないように単純に傾いていますが、理想的には、きれいな API ケーキを持ってそれを食べる方法があります。

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

c# - C#、xunit、fscheck、カスタム ジェネレーターまたは制約付きランダム文字列を使用した単純なプロパティ ベースのテストの記述

fscheck ライブラリを使用してプロパティ ベースのテストを作成する方法を学ぶために、ダイヤモンド カタを解決しようとしています。C# でテストを書きたいのですが、Visual Studio 2017 を使用しています。

入力としてランダムな文字を生成せず、文字のみを生成するプロパティ ベースのテストを作成したいと考えています。fscheck がこれを行うために必要なジェネレーターを記述する方法と、コードを配置するファイルがわかりません。

どこでも検索してドキュメントを読みましたが、問題が発生しています (F# を C# にうまく変換できないためです)。

[Property]入力データを文字のみに制限するためにどのように使用されますか?

より良いアプローチがあれば、私に知らせてください。

[編集:]

コード例を編集しました。これには、Kurt Schelfthout による実用的なソリューションが 1 つ含まれています。



テスト


テストするクラス