問題タブ [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.
f# - テスト コードを内部としてマークしなくても、内部コードをテストできますか?
テストしたい多くの非公開のものを含む F# ライブラリがあります。現在、アセンブリのパブリック API の一部ではないすべてのコードがマークさinternal
れています (具体的には、マークされているモジュールに配置されていますinternal
)。を使用しInternalsVisibleToAttribute
て、このコードをテスト アセンブリに表示できるようにします。ただし、テスト アセンブリをコンパイルするには、署名に internal 型を使用するすべてのテスト (ほとんどの場合、FsCheck を使用してテスト入力を自動生成するため) も internal としてマークする必要があります (これは、各テストに適用する必要があります)。内部モジュールは xunit によって検出されないため)。さらに、FsCheck 生成専用に使用されるすべての型 (たとえばtype ValidCustomer = ValidCustomer of Customer
、Customer
も内部としてマークする必要があり、FsCheck は内部タイプを作成するときにスタックするように見えるため、テストは実行されません。
内部型に署名が依存するすべてのテストを internal としてマークすることなく、(別のテスト アセンブリから) 内部 F# コードをテストする方法はありますか? 現時点では、元のコードの内部に何も作成しないように単純に傾いていますが、理想的には、きれいな API ケーキを持ってそれを食べる方法があります。
c# - C#、xunit、fscheck、カスタム ジェネレーターまたは制約付きランダム文字列を使用した単純なプロパティ ベースのテストの記述
fscheck ライブラリを使用してプロパティ ベースのテストを作成する方法を学ぶために、ダイヤモンド カタを解決しようとしています。C# でテストを書きたいのですが、Visual Studio 2017 を使用しています。
入力としてランダムな文字を生成せず、文字のみを生成するプロパティ ベースのテストを作成したいと考えています。fscheck がこれを行うために必要なジェネレーターを記述する方法と、コードを配置するファイルがわかりません。
どこでも検索してドキュメントを読みましたが、問題が発生しています (F# を C# にうまく変換できないためです)。
[Property]
入力データを文字のみに制限するためにどのように使用されますか?
より良いアプローチがあれば、私に知らせてください。
[編集:]
コード例を編集しました。これには、Kurt Schelfthout による実用的なソリューションが 1 つ含まれています。
テスト
テストするクラス