単体テストの目的で別のアセンブリのクラスにアクセスする方法は?

StackOverflow https://stackoverflow.com/questions/1211707

  •  06-07-2019
  •  | 
  •  

質問

Visual-Studio 2008の方法の単体テストに飛び込み、テスト目的でのクロスアセンブリ class アクセスを達成するための最良の方法は何だろうと思います。

基本的に、1つのソリューションに2つのプロジェクトがあります:

  1. MyProject(C#)
  2. MyProjectTests(C#テストプロジェクト)

現在、MyProjectのすべてにデフォルトのアクセシビリティがあります。これを正しく思い出せば、すべてが事実上 internal であることを意味します。私は主に class レベルでテストしたいと思っていますが、いくつかのデリゲートが関係しています。

おそらく将来、外部APIが登場するでしょうが、私は機能の完成までに少なくとも20%を費やしており(少なくとも紙の上では)、この未テストの上にさらにコードを重ねることにかなり不安を感じていますコア。したがって、アプリが従来の(テスト:悪いおよび/または怠zyな)機能テストを完了する前に、そして間違いなくバージョンn + 1外部APIが起動する前に、テストを行いたいと思います。

単純な答えに加えて、解決策の例は大歓迎です。

役に立ちましたか?

解決

アセンブリレベルの属性 InternalsVisibleToAttribute これを実現します。

追加

[assembly:InternalsVisibleTo("MyProjectTests")]

MyProjectアセンブリのAssemblyInfo.csに。

他のヒント

メインプロジェクトのAssemblyInfo.csに属性を追加し、名前付きアセンブリへの内部メソッドへのアクセスを許可することにより、内部メソッドをテストできます。

[assembly:InternalsVisibleTo(" MyProjectTestsNameSpace.MyProjectTests")]

詳細情報はですここ

追加する必要があります

[assembly:InternalsVisibleTo("Unit.Tests.Assembly")] 

" MyProject(C#)"のAssemblyInfo.csへ。これにより、テストはテスト用の内部メソッドにアクセスできます。

これを見つけました https://msdn.microsoft.com/en -us / library / hh598957.aspx 誰かの助けになることを願っています。

概要:

  • 単体テストプロジェクトで、テスト対象のコードへの参照を追加します。同じソリューションでコードプロジェクトへの参照を作成する方法は次のとおりです。
  • ソリューションエクスプローラーでプロジェクトを選択します。
  • 「プロジェクト」メニューで、「参照の追加...」を選択します。
  • [参照マネージャー]ダイアログボックスで、[ソリューション]ノードを開き、[プロジェクト]を選択します。
  • コードプロジェクト名を確認し、ダイアログボックスを閉じます。
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top