Core Assemblyで特定のクラスを公開しないようにしたいのですが、まだテストしたいと思っています。どうやってやるの ?アセンブリ(ユニットテスト1)を使用して別のアセンブリの内部プロパティにアクセスする方法を教えてください。
答えて
InternalsVisibleToレスキューに属性!
だけ追加します。
[assembly:InternalsVisibleToAttribute("UnitTestAssemblyName")]
をあなたのコアクラスAssemblyInfo.csファイル
ベストプラクティスのためのFriend Assemblies (C# Programming Guide)を参照してくださいに。
リフレクション(MSテスト項目のように)を使用することも、ユニットテストアセンブリをコアアセンブリのフレンドに宣言することもできます。
もう1つのオプションは、ユニットテストを同じアセンブリに配置することです。 InternalsVisibleで
あなたのアセンブリは強くあなたは、公開鍵(注:フルキーない公開キートークン)を指定する必要が命名されている場合たとえば...
[assembly: System.Runtime.CompilerServices.InternalsVisibleTo("BoardEx_BusinessObjects.Tests,
PublicKey=0024000004800000940000000602000000240000525341310004000001000100fb3a2d8 etc etc")]
と、次のトリックがあります私は、このようなトラブル...あなたは本当にユニットTESにしたい場合には行かないことをお勧め
http://www.andrewconnell.com/blog/archive/2006/09/15/4587.aspx
残念ながら参照リンクは機能しません。 – toong
ありがとうございました。私はそれを更新しました。 –
... CMDラインに頼ることなく、公開鍵を取得するための非常に便利あなたの内部クラスだけを名前空間に隠して、あなたの内部コードだけが使用するようにしてください。 本当にには、そのレベルの隠れが必要です。
私はあなたのコメントを下に気づいたときに言ったことを正確にコメントするつもりでした。 +1! :) –
単体テストをテストするコードと同じアセンブリに配置しました。これは私にとって意味があります。なぜなら、自分自身を "自分自身を初期化する"や "自分自身を記述する"のようなものとともに、クラスの機能として「自分自身をテストする」と考えるからです。
私はこのアプローチにいくつかの異論を聞いたことがありますが、納得している人はほとんどいません。
パフォーマンスが痛いバー、私は言う!ハードデータなしで最適化しないでください!おそらく、アセンブリを低速リンクを介してダウンロードするよう計画している場合、アセンブリサイズを最小限に抑えることは価値があります。
セキュリティリスクです。あなたのテストで秘密がある場合のみ。それをしないでください。
あなたの状況は私のものとは異なるので、おそらくそれはあなたにとって意味をなさないでしょうし、そうでないかもしれません。あなたはそれを理解しなければなりません。
別名:C#では、私は一度、テストしていたクラスの中にネストされた "Tests"というクラスにユニットテストを入れようとしました。これにより、物事の正しい構成が明らかになりました。また、クラス "Foo"のテストが "FooTests"と呼ばれるクラスにある場合に発生する名前の重複も避けました。しかし、私がアクセスしたユニットテストフレームワークは、「公開」とマークされていないテストを受け入れることを拒否しました。つまり、テストしているクラスを「プライベート」にすることはできません。誰も本当に公的な方法として呼ぶことはないので、私はテストを「パブリック」にする必要があるという正当な理由は考えられません。すべてが反映されています。のためのユニットテストフレームワークを書く場合。ネット、私のために非公式のテストを許可することを検討してください!
- 1. InternalVisibleToを使用せずに、あるアセンブリの内部プロパティに別のアセンブリからアクセスする方法
- 2. アセンブリでのレジスタの分割方法を教えてください。
- 3. アセンブリを入力して0を書き込むときの区別方法を教えてください。
- 4. 完全なアセンブリ文字列からアセンブリ名を取得する方法を教えてください。
- 5. PowerShell v3モジュールで外部.NETアセンブリを確実に参照する方法を教えてください。
- 6. あるアセンブリのプロパティを別のアセンブリの別のプロパティにバインドする方法
- 7. アセンブリで数えてください
- 8. Matlabのクラス内でオブジェクトにアクセスする方法を教えてください。
- 9. TypeScript/JavaScriptコードのユニットテストで、内部サブスクライブイベントが発生するのを待つ方法を教えてください。
- 10. JavaScriptを使用して内部ドキュメントソースにiframeをリンクする方法を教えてください。
- 11. SQL Server 2008のCLRアセンブリの制限事項を教えてください。
- 12. .NETアプリケーションがGACからアセンブリをロード/参照するのを防ぐ方法を教えてください。
- 13. StackOverflowデータへのアクセス方法を教えてください。
- 14. Gitlabへのアクセス方法を教えてください。
- 15. Soundcloud APIへのアクセス方法を教えてください。
- 16. MSBuildで.csprojのChooseElementを作成する方法を教えてください。 Microsoft.Build.Construction</li> <li>アセンブリ::
- 17. 配備された.NETプログラムはGACでアセンブリを参照する方法を教えてください。
- 18. をクリックして別のページを開く方法を教えてください。
- 19. chrome.tabs.onUpdated.addListenerの使用方法を教えてください。
- 20. generate_eventsイベントの使用方法を教えてください。
- 21. GridLayoutの使用方法を教えてください。
- 22. Android GPUの使用方法を教えてください。
- 23. Microsoft VSTOインターフェイスの使用方法を教えてください。
- 24. Amazon Echo Lookの使用方法を教えてください。
- 25. org.mockito.AdditionalMatchers.gtの使用方法を教えてください。
- 26. jqm.page.params.jsプラグインの使用方法を教えてください。
- 27. F#Reflectionライブラリの使用方法を教えてください。
- 28. 内部クラスがメッセージを送信する方法を教えてください。
- 29. NativeActivityを使用して内部ストレージファイルシステムに書き込む方法を教えてください。
- 30. IBOutletをプロパティとして定義する方法を教えてください。
私は、akuがリンクするガイダンスに従って、厳密に名前付きのアセンブリでこれを成功させました。私は1つの問題があった。すべての設定が完了したら、Intellisenseを動作させるためにVisual Studioを再起動しなければなりませんでした。再起動する前にコンパイルされますが、常に赤い線が表示されます。 –