1. ホーム
  2. c#

[解決済み] 内部コードを他のプロジェクトからのユニットテストに利用できるようにする

2022-07-01 16:50:59

質問

私たちは、すべてのユニットテストを独自のプロジェクトに配置します。 私たちは、ユニットテストのために、特定のクラスを内部ではなく、パブリックにしなければならないことに気づきました。 これを行う必要がないようにする方法はありますか。 クラスを sealed ではなく public にすることによるメモリへの影響はどのようなものでしょうか。

どのように解決するのですか。

.NETを使用している場合は InternalsVisibleTo アセンブリ属性を使用すると、"friend" アセンブリを作成することができます。 これらは、他のアセンブリの内部クラスやメンバへのアクセスを許可された、特定の強い名前を持つアセンブリです。

注意:これは関係するアセンブリを緊密に結合するため、慎重に使用する必要があります。 InternalsVisibleTo の一般的な使用法は、ユニット テスト プロジェクトです。 上記の理由から、実際のアプリケーションのアセンブリで使用するには、おそらく良い選択ではありません。

例です。

[assembly: InternalsVisibleTo("NameAssemblyYouWantToPermitAccess")]
namespace NameOfYourNameSpace
{