60

次の行を挿入します。

[assembly: InternalsVisibleTo("MyTests")]

test( Properties/AssemblyInfo.cs)の下のプロジェクト内で、MyTestsは単体テスト プロジェクトの名前です。しかし、何らかの理由で、単体テスト プロジェクトから内部メソッドにアクセスできません。

私が間違っていることについてのアイデアはありますか?

4

6 に答える 6

72

アセンブリが厳密な名前で署名されている場合は、この回答を見てください

それ以外の場合は、テスト アセンブリの名前が実際に "MyTests.dll" であることを確認します (プロジェクト名と一致する必要はありませんが、既定では一致します)。

于 2013-09-17T09:10:32.867 に答える
15

私たちの多くが過去にこのわずかな混乱を経験したので、少し分解してみましょう...

アセンブリ A には内部クラスがあります。アセンブリ B には単体テストがあります。

アセンブリ B でアセンブリ A の可視性を許可したいと考えています。

アセンブリ A 内に InternalsVisibleTo アセンブリ属性を配置し、アセンブリ B へのアクセスを許可する必要があります。

于 2014-02-24T10:46:00.770 に答える
4

メイン プロジェクトを参照するには、テスト プロジェクトが必要です。

これは見落としがちで、既存のテスト コードがない場合、InternalsVisibleTo が機能していないように見えることがあります。

于 2015-11-28T22:34:11.830 に答える
0

厳密な名前のアセンブリからの内部は、別の厳密な名前のフレンド アセンブリにのみ公開できます。ただし、非厳密な名前付きアセンブリは、内部を厳密な名前付きのフレンド アセンブリにさらす可能性があります。

于 2020-02-07T19:25:52.850 に答える