結論、リフレクションを使用してテストします。
リフレクションとは
リフレクションはアセンブリからメタデータを取得できる機能です。
※アセンブリは.NETアプリケーションを構成する.exe・.dllファイルを指します
※メタデータはプログラムのバイナリ情報でアセンブリや型に関する情報が含まれます。
コード例
環境
- C# 8.0
- NUnit 3.13.3
- VisualStudio 2022 17.4.1
プロダクションコード
.cs
public class Calc
{
private int Add(int a, int b)
{
return a + b;
}
}
テストコード
.cs
public class CalcTest
{
[Test]
public void AddTest()
{
var calcTest = new Calc();
// CalCクラスの指定したメソッド情報の取得(インスタンスのメソッド且つパブリック以外のメソッド)
var methodInfo = typeof(Calc).GetMethod("Add", BindingFlags.Instance | BindingFlags.NonPublic);
var param = new object[] { 1, 2 };
// Calcクラスに引数を指定して実行
var result = methodInfo.Invoke(calcTest, param);
Assert.AreEqual(3, result);
}
}