2012-11-26 11 views
8

問題は、テストしたいクラスで使用されているアセンブリ内にたくさんの内部クラスがあることです。アクセサーはVS2012から削除されているので、私は[InternalsVisibleTo]を使用しても問題ありません。それは素晴らしいことです...私の内部クラスを擬似しようとする場合を除いて、それらはFakesフレームワークには見えません。私が扱っている特定のクラスは静的メソッドを持つ静的クラスであり、そのレベルのリファクタリングに対する組織の抵抗のために、インタフェースを使用する(およびスタブを使用する)すべてをリファクタリングする必要はありません。Fakes Framework shimでVS 2012の内部クラスを模擬/分離する方法は?

これらの内部メンバーをVisual Studio 2012のshimsコンテキストで使用できるようにする方法はありますか?

答えて

20

次のページでは、生成された偽のアセンブリに内部型を表示する方法を説明します。

偽物コードジェネレータが生成した偽物アセンブリに表示されているタイプのためのシムの種類とスタブタイプを生成します。と言うhttp://msdn.microsoft.com/en-us/library/hh708916.aspx#bkmk_internal_types

。 Shakesされたアセンブリの内部型をFakesおよびテストアセンブリに表示させるには、生成されたFakesアセンブリとテストアセンブリの可視性を提供するShimmedアセンブリコードにInternalsVisibleToAttribute属性を追加します。

[assembly: InternalsVisibleTo("FileSystem.Fakes")] 
[assembly: InternalsVisibleTo("FileSystem.Tests")] 

はまた、内部型ターゲットアセンブリからテストアセンブリへのアクセスを許可するInternalsVisibleToAttributeを必要としています。言い換えれば、あなたが必要です:

[assembly: InternalsVisibleTo("TargetAssembly.Fakes")] 
[assembly: InternalsVisibleTo("TestAssembly")] 
+0

私はこれを試してみましたが、実際には、私の内部インターフェイスのいずれも表示されます。私は公開インタフェース用のスタブを取得するだけです。私はオリジナルの質問がシムについてのものだったことを知っています - 内部インターフェイスをスタブするためにこれを動作させることができましたか? –

+2

MSDNのページを更新中です。テストアセンブリがターゲットアセンブリから内部型にアクセスできるようにするには、InternalsVisibleToAttributeも必要です。 [assembly:InternalsVisibleTo( "TargetAssembly.Fakes")] [assembly:InternalsVisibleTo( "TestAssembly")] –

+4

私が逃したmsdnページの重要なメモ: 'Fakeフレームワークは同じものを使用します。あなたがものを署名している場合、署名は常に 'のPublicKey = 0024000004800000940000000602000000240000525341310004000001000100e92decb949446f688ab9f6973436c535bf50acd1fd580495aae3f875aa4e4f663ca77908c63b7f0996977cb98fcfdb35e05aa2c842002703cad835473caac5ef14107e3a7fae01120a96558785f48319f66daabc862872b2c53f5ac11fa335c0165e202b4c011334c7bc8f4c4e570cf255190f4e3e2cbc9137ca57cb687947bc'するかどう生成されたすべてのassemblies'、その公開鍵に署名するための鍵!これは私を永遠にこれをキャッチするのにかかった! –

関連する問題