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