次の行を挿入します。
[assembly: InternalsVisibleTo("MyTests")]
test( Properties/AssemblyInfo.cs
)の下のプロジェクト内で、MyTests
は単体テスト プロジェクトの名前です。しかし、何らかの理由で、単体テスト プロジェクトから内部メソッドにアクセスできません。
私が間違っていることについてのアイデアはありますか?
次の行を挿入します。
[assembly: InternalsVisibleTo("MyTests")]
test( Properties/AssemblyInfo.cs
)の下のプロジェクト内で、MyTests
は単体テスト プロジェクトの名前です。しかし、何らかの理由で、単体テスト プロジェクトから内部メソッドにアクセスできません。
私が間違っていることについてのアイデアはありますか?
アセンブリが厳密な名前で署名されている場合は、この回答を見てください。
それ以外の場合は、テスト アセンブリの名前が実際に "MyTests.dll" であることを確認します (プロジェクト名と一致する必要はありませんが、既定では一致します)。
私たちの多くが過去にこのわずかな混乱を経験したので、少し分解してみましょう...
アセンブリ A には内部クラスがあります。アセンブリ B には単体テストがあります。
アセンブリ B でアセンブリ A の可視性を許可したいと考えています。
アセンブリ A 内に InternalsVisibleTo アセンブリ属性を配置し、アセンブリ B へのアクセスを許可する必要があります。
メイン プロジェクトを参照するには、テスト プロジェクトが必要です。
これは見落としがちで、既存のテスト コードがない場合、InternalsVisibleTo が機能していないように見えることがあります。
厳密な名前のアセンブリからの内部は、別の厳密な名前のフレンド アセンブリにのみ公開できます。ただし、非厳密な名前付きアセンブリは、内部を厳密な名前付きのフレンド アセンブリにさらす可能性があります。