LoginSignup
0
0

【C#/NUnit】privateメソッドをテストコード側で呼び出しテストする

Posted at

結論、リフレクションを使用してテストします。

リフレクションとは

リフレクションはアセンブリからメタデータを取得できる機能です。

※アセンブリは.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);
    }
}

image.png

参考

0
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0