第08章:C#のテスト基盤を用意しよう(Windows/VS)🛠️✨
この章のゴールはコレだよ〜!🎯✨ **「テストを書いて、Test Explorerで実行できて、つまずいた時に直せる」**ところまで一気にいきます😊💕
0) いまの “最新” テスト環境ざっくり地図 🗺️✨
- C# は “C# 14” が最新(.NET 10 対応)だよ〜🆕✨ (Microsoft Learn)
- .NET は 2026/1/9 時点で .NET 10.0.2 / 9.0.12 / 8.0.23 のサービスリリースが出てるよ🧯✨ (Microsoft for Developers)
- Visual Studio 2026 の情報・更新も出てる(テスト/カバレッジ周りも強化)🧰✨ (Microsoft Learn)
1) まず “正しい形” のソリューションを作る 📦✨

テストは「本体プロジェクト」と「テストプロジェクト」を 分ける のが基本だよ😊🧩
例:
MyApp(本体:クラスライブラリ or アプリ)MyApp.Tests(テスト)
**おすすめフォルダ構成(あとで拡張しやすい)**📁✨
src/MyApp/tests/MyApp.Tests/
2) Visual Studioでテストプロジェクトを追加する(王道ルート)🪄🖱️
A. 本体プロジェクトを作る(例:Class Library)
- 「新しいプロジェクトの作成」
- 「Class Library」で作成(C#)
- できたら、ソリューション名もいい感じに整える😊✨
B. テストプロジェクトを追加する
- ソリューションを右クリック → 追加 → 新しいプロジェクト
- 検索欄に
testと入れる - 好きなフレームワークのテンプレを選ぶ(後で比較するよ)🧪✨ (Microsoft Learn)
3) テストフレームワーク3兄弟を “ゆるく” つかむ 🧪💕
結論:どれでもOK!ただし「迷ったら」基準があるよ😊✨
- MSTest:Microsoft公式寄りで安心感つよい🧡(サポート明記) (NuGet Gallery)
- xUnit:現場採用が多く、書き味がモダン✨(NuGetで配布) (NuGet Gallery)
- NUnit:昔から人気、属性ベースで分かりやすい💙 (NuGet Gallery)
💡この教材では、最初は MSTest か xUnit を推しにするね😊 (どっちでも “I/O境界の分離” の練習は同じノリで進められるよ〜!)
4) “テストが発見される” の三種の神器 🔍🧰
Visual Studio の Test Explorer がテストを見つけて実行するには、だいたいこの3点が大事!
- テストSDK(土台)
- フレームワーク本体(MSTest/xUnit/NUnit)
- アダプター(VSが認識するための橋渡し)
たとえば MSTest は公式に「発見と実行のために Adapter を入れてね」って書いてあるよ🧩✨ (NuGet Gallery)
5) .csproj の “正解例” を見て安心しよう 😌🧾✨
テンプレで作れば基本OKだけど、壊れたときに直せるように「あるべき姿」を見ておこうね〜😊
MSTest の例(よく見る形)
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net10.0</TargetFramework>
<IsPackable>false</IsPackable>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="18.0.1" />
<PackageReference Include="MSTest.TestAdapter" Version="4.0.2" />
<PackageReference Include="MSTest.TestFramework" Version="4.0.2" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\src\MyApp\MyApp.csproj" />
</ItemGroup>
</Project>
Microsoft.NET.Test.Sdkはテストプロジェクトの土台だよ🧱 (NuGet Gallery)- MSTest は
TestFrameworkとTestAdapterの2つが目印👀✨ (NuGet Gallery)
xUnit の例(v2系のイメージ)
<ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="18.0.1" />
<PackageReference Include="xunit" Version="2.9.3" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.8.2" />
</ItemGroup>
xUnit は NuGet で配布されてて、xunit のページで最新バージョンが分かるよ📦✨ (NuGet Gallery)
(※xUnit は v3 系もあるので、チームの方針があるならそれに合わせるのがいちばん!公式のパッケージ案内もあるよ🧭✨ (xunit.net) )
NUnit の例(VSアダプターが重要)
<ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="18.0.1" />
<PackageReference Include="NUnit" Version="4.4.0" />
<PackageReference Include="NUnit3TestAdapter" Version="6.1.0" />
</ItemGroup>
NUnit本体と、VSで動かすための NUnit3TestAdapter が大事だよ〜🧩✨ (NuGet Gallery)
6) Test Explorer の基本操作(ここできれば勝ち!)🏆👀✨

Visual Studio の Test Explorer は「テストの司令塔」だよ📡✨
- すべて実行 ▶️
- 選んだテストだけ実行 ✅
- 失敗だけ再実行 🔁
- デバッグ実行 🐞(ここ超大事!)
Microsoftのドキュメントでも Test Explorer の流れが説明されてるよ〜📘✨ (Microsoft Learn)
💡コツ:
- テストが増えると迷子になりがちなので、検索ボックスで絞り込みが最強🔎✨
7) まずは “動くテスト” を1本通す(最短ルート)🚀🧪
本体側(例:足し算)
namespace MyApp;
public static class Calc
{
public static int Add(int a, int b) => a + b;
}
テスト側(MSTest例)
using Microsoft.VisualStudio.TestTools.UnitTesting;
using MyApp;
namespace MyApp.Tests;
[TestClass]
public class CalcTests
{
[TestMethod]
public void Add_1_and_2_returns_3()
{
var actual = Calc.Add(1, 2);
Assert.AreEqual(3, actual);
}
}
✅ここまでできたら、Test Explorer で「実行」して緑にしよう〜!💚🎉
8) VS Code 派のための最低ライン(CLI実行)⌨️✨
Visual Studio がメインでも、たまに CLI が便利なときがあるよ😊 (CIや、軽く確認したい時とか!)
- テンプレ一覧:
dotnet new list - テスト作成:
dotnet new mstest/dotnet new xunitなど .NET SDK には単体テスト用テンプレも含まれるよ〜📦✨ (Microsoft Learn)
実行はだいたいこれ:
dotnet test
9) “テストが出てこない😵💫” ときのチェックリスト ✅🧯
Test Explorer にテストが表示されないときは、だいたいココ!
- ビルドできてる?(まずは Build / Rebuild)🏗️
- テストSDK & Adapter 入ってる?(csproj確認)🧩
- **本体への ProjectReference ある?**🔗
- クラス/メソッドがテストとして認識される形?(属性ついてる?)🏷️
- それでもダメなら、
.vs/bin/objを消して再起動🧹✨(よく効く)
10) ミニ課題(10〜15分)🎒✨
🎯目的:テスト基盤が “自分の手で” 作れる 状態にする!
Calc.Subtract(a, b)を追加する- テストを1本追加して、緑にする💚
- 失敗するテストをわざと作って、デバッグ実行で原因を見る🐞👀
次章へのつなぎ(チラ見せ)🤖💡✨
次の第9章は AIでテスト学習が爆速になる 回だよ〜! 「テストケース出して」「AAAの形にして」ってお願いして、自分でレビューできる目を作っていこうね😊💕
必要なら、この第8章の内容をベースにして、 「xUnit版の最小サンプル」も同じ粒度で作るよ〜🧪✨