.NET系のテストフレームワークには、大きく3種類(MsTest・NUnit・xUnit)がある。
Visual Studioで標準搭載されているのが「MsTest」、他はNuGetでインストールできる。
プライベートメソッドは非公開のため通常ではアクセスできないが、単体テストするにはアクセスする必要がある。
クラスライブラリなどインスタンスを生成してメソッドを呼ぶ
PrivateObjectを使用する。
var cls1 = new Class1(); var pbObj = new PrivateObject(cls1); ret = (string)pbObj.Invoke("AddPrivate", 1, 2);
コンソールアプリケーションでは、静的になっていることが多い
PrivateTypeを使用する。
statcクラスのprivateメソッドのテストを実施したい
> namespace TestFuga { public class Program { private static string GetHoge() { return "Hoge"; } } } namespace UnitTest { [TestClass] public class UnitTest1 { [TestMethod] public void TestMethod1() { var target = new PrivateType(typeof(TestFuga.Program)); var result = target.InvokeStatic("GetHoge", null); Assert.AreEqual("Hoge", result); } } }