🔒
【C#】単体テストでプライベートメソッドをテストする方法
環境
- .NET: 8.0.303
- xUnit: 2.5.3
参考情報
プライベートメソッドをテストする
-
ソリューションファイルを作成します。
dotnet new sln
-
ソリューションファイルにテスト対象の csproj ファイルを追加します。
dotnet sln add PrimeService.csproj
-
テストプロジェクトを作成します。
dotnet new xunit -o PrimeService.Tests
-
ソリューションファイルにテストプロジェクトを追加します。
dotnet sln add PrimeService.Tests.csproj
-
テストプロジェクトの依存関係としてテスト対象の csproj ファイルを追加します。
dotnet add PrimeService.Tests.csproj reference PrimeService.csproj
-
テスト対象の
AssemblyInfo.cs
に InternalsVisibleTo を追加してテストプロジェクトから internal メソッドの利用を許可します。AssemblyInfo.csusing System.Runtime.CompilerServices; [assembly: InternalsVisibleTo("PrimeService.Tests")]
-
テスト対象のプライベートメソッドのラッパーを作成します。
PrimeService.csinternal protected string PrivateMethodWrapper(string str) { // テスト対象のプライベートメソッド }
-
テストコードでラッパーを使用してプライベートメソッドのテストを行います。
Discussion