🔒

【C#】単体テストでプライベートメソッドをテストする方法

2024/09/30に公開

環境

  • .NET: 8.0.303
  • xUnit: 2.5.3

参考情報

プライベートメソッドをテストする

  1. ソリューションファイルを作成します。

    dotnet new sln
    
  2. ソリューションファイルにテスト対象の csproj ファイルを追加します。

    dotnet sln add PrimeService.csproj
    
  3. テストプロジェクトを作成します。

    dotnet new xunit -o PrimeService.Tests
    
  4. ソリューションファイルにテストプロジェクトを追加します。

    dotnet sln add PrimeService.Tests.csproj
    
  5. テストプロジェクトの依存関係としてテスト対象の csproj ファイルを追加します。

    dotnet add PrimeService.Tests.csproj reference PrimeService.csproj
    
  6. テスト対象の AssemblyInfo.cs に InternalsVisibleTo を追加してテストプロジェクトから internal メソッドの利用を許可します。

    AssemblyInfo.cs
    using System.Runtime.CompilerServices;
    
    [assembly: InternalsVisibleTo("PrimeService.Tests")]
    
  7. テスト対象のプライベートメソッドのラッパーを作成します。

    PrimeService.cs
    internal protected string PrivateMethodWrapper(string str)
    {
        // テスト対象のプライベートメソッド
    }
    
  8. テストコードでラッパーを使用してプライベートメソッドのテストを行います。

Discussion