[C#]クラス自体がinternalなときのUnitTest


UnitTest関連記事

やりたいこと

以前、private、internalなメソッドをUnitTestしたいときのやり方を調べたが、クラス自体がinternalだったときに、そもそもUnitTest側コードからそのクラスが見えないため、テストできなかった。何とかUnitテストしたい。

やり方

InternalsVisibleTo属性を使う。

まず、dll側のAssenblyInfo.csを開く。

そこに、下記の一文を追加する。
「UnitTestProject1」の部分は、internalクラスを公開する公開先のアセンブリ名を書く。

[assembly: InternalsVisibleTo("UnitTestProject1")]

これで、公開先のアセンブリ(ここでいうところの「UnitTestProject1.dll」)からは、Class1に含まれるinternalなクラスが見えるようになる。

コード

https://github.com/tera1707/WPF-/tree/master/028_PrivateClassUnitTest
以前のコードと同じ。Class1とClass1Subがinternalにしただけ。

参考

Visual Studio の単体テストで利用するInternalsVisibleTo属性について
http://moriblog.kit-eng.com/?p=867