Posts tagged ‘Visual Studio’

プログラミングを行っている際に外部公開の必要のないフィールド、プロパティ、メソッドなどには通常、不要なアクセスを制限するように必要最低限のアクセス修飾子を設定するかと思います。

単体テストをコーディングしていると、どうしても気になってしまうのが内部利用しているメソッドに対しての単体テストになります。 特にカバレッジの取得を行っているようなケースでは、どうしてもアクセスしたいメソッドなどが発生する場合があります。

限定的な範囲で公開したいような場合のアクセス修飾子として、同一アセンブリ内での公開を許可するinternalやFriendなどを利用することができますが、単体テストは実運用で利用されるプログラムとは異なるため、同一アセンブリではなく外部プロジェクトとして構成する場合が多いと思います。 つまり、internalやFriendを使ってもアクセスすることができなくなります。

このような場合に利用できるのがアセンブリ属性であるInternalsVisibleToになります。InternalsVisibleTo属性を利用すると、特定のアセンブリのみ同一アセンブリのクラスと同様にinternal(Friend)メンバに対してアクセスができるようになります。

 

それでは、その方法について具体的に見ていきましょう。

たとえば以下のようなクラスがあった場合、

   1:  namespace SampleTestLib
   2:  {
   3:      public class Class1
   4:      {
   5:          internal int Add(int x, int y)
   6:          {
   7:              return x + y;
   8:          }
   9:      }
  10:  }

当然、同一アセンブリ内のクラスからはAddメソッドにアクセスすることができますが、異なるアセンブリからはアクセスできません。

そこで、以下の手順でアセンブリ属性InternalsVisibleToを追加します。つまり、アセンブリレベルで適用される属性なので、ソースコードの先頭やAssemblyInfoファイル内で定義することができます。

ここではAssemblyInfo内に定義したいと思います。

ソリューションエクスプローラーから「Properties」を開き、中もあるAssemblyInfo.csを開きます。

20130502113112

プロジェクトのAssemblyInfo内に以下の属性を追加します。

   1:  // 公開先のアセンブリを指定する
   2:  // [assembly: InternalsVisibleTo("公開先のアセンブリ名")]
   3:  [assembly: InternalsVisibleTo("SampleTestLibTest")]
 

これらはSystem.Runtime.CompilerServices名前空間にある属性のため、VBなどではImportsを忘れずに!

 

プロジェクトで単体テストを作成する際によく利用する属性なのですが、いつも大体コピペで済むこともあって、忘れることが多いので一応忘備録代わりに(^^;

InternalsVisibleToAttribute クラス

ツイートツイート
Facebook にシェア
このエントリーをはてなブックマークに追加
[`evernote` not found]

BUILDのKeynoteやセッションビデオが公開されています。こちら

BUILDは今年から開催されているマイクロソフトの開発者向けイベントですね。

Windows 8やVisual Studio 11, Azureなどさまざまな新製品・新機能がお披露目となったことはご存知の方も多いと思います。

日本時間だと深夜に実施されたため、キーノートを見逃した方も多いかもしれませんね。

というワケで3連休の間、時間ができたら少し見てみようかなということでメモ。

ツイートツイート
Facebook にシェア
このエントリーをはてなブックマークに追加
[`evernote` not found]

Update for Microsoft Visual Studio LightSwitch 2011 (KB2603917)が公開されています。こちら

Visual Studio LightSwitchはSQL ServerやWindows Azure, SQL Azureなど最新のマイクロソフトテクノロジーを用いたアプリケーションの開発を支援するいわゆるRAD(Rapid Application Development)ツールですね。

こちらのUpdateではSQL Azureへの配置を行おうとした際に「SQL Server version not supported(SQL Serverのバージョンがサポートされていません)」のエラーが表示されていた問題に対応したもののようですね。

というワケでこちらもメモ。

ツイートツイート
Facebook にシェア
このエントリーをはてなブックマークに追加
[`evernote` not found]

MSDN マガジンのAugust 2011が公開されています。こちら

今月はLightSwitchやHTML5, TFSとExchangeを利用したチケットシステムの構築や並列プログラミングと盛りだくさんですね。

毎度エッジの効いた記事だなぁ・・・。いやー、世の中広いなーと痛感(^^;

てなことでメモ。

ツイートツイート
Facebook にシェア
このエントリーをはてなブックマークに追加
[`evernote` not found]

Visual Studio 2010のTryItサイトが公開されています。こちら

Visual Studio 2010はご存じの通りマイクロソフトの統合開発環境ですね。

こちらも昨年から無償版は公開されていたのですが、さまざまなエディションがまとまったリンクになっていたのでメモ。

ツイートツイート
Facebook にシェア
このエントリーをはてなブックマークに追加
[`evernote` not found]

ネタ元:Somasegar’s WebLog

Python Tools for Visual Studio 1.0が公開されています。こちら

Python Tools for Visual Studioはその名前の通り、Visual Studioで動的言語であるPythonの開発を行うことができる統合開発環境(Integrated Development Environment:IDE)ですね。

こちらはフリーかつオープンソースのVisual Studio用プラグインとなっており、CodePlexで公開されています。

サポートしているのはCPythonとIronPythonとなっており、インテリセンスを使った開発や”Find all refs”ということでVS開発でとても便利な機能「定義へ移動」やオブジェクトブラウザーなどが利用できる他、ローカルおよびリモートデバッグなど豊富な機能が盛り込まれているようですねー。

機能一覧を見ただけでも便利そうなんですが、静的言語に迫る勢いでIDEが進化しているようですねー。

というワケでメモ。

ツイートツイート
Facebook にシェア
このエントリーをはてなブックマークに追加
[`evernote` not found]