単体テストの概要
Visual Studio を使用して、単体テストを定義および実行してコードの正常性を維持し、コード カバレッジを保証し、事前にエラーとフォールトを見つけます。 単体テストを頻繁に実行し、コードが正しく動作していることを確認します。
この記事ではコードに C# と C++ を使用しており、図では C# が示されていますが、概念と機能は .NET 言語、C++、Python、JavaScript、TypeScript に適用されます。
単体テストを作成する
このセクションでは、単体テスト プロジェクトの作成方法を説明します。
Visual Studio でテストするプロジェクトを開きます。
単体テストの例のデモを行うことを目的として、この記事では HelloWorld という名前のシンプルな "Hello World" C# または C++ Console プロジェクトをテストします。 そのようなプロジェクトのサンプル コードは、次のとおりです。
ソリューション エクスプローラーで、ソリューション ノードを選びます。 次に、上部のメニュー バーで [ファイル]>[追加]>[新しいプロジェクト] を選択します。
[新しいプロジェクト] ダイアログ ボックスで、使用する単体テスト プロジェクトを見つけます。
検索ボックスに「テスト」と入力し、MSTest (C#) や Native Unit Test プロジェクト (C++) など、使用するテスト フレームワーク用の単体テスト プロジェクト テンプレートを検索して、選択します。
Visual Studio 2017 バージョン 14.8 以降、.NET 言語には NUnit と xUnit 用の組み込みのテンプレートが含まれています。 C++ の場合、この例では、Microsoft Native Unit Test Framework を使用する Native Unit Test プロジェクトを選択します。 (別の C++ テスト フレームワークを使用するには、C/C++ の単体テストの記述に関するページを参照してください)。 Python の場合、使用するテスト プロジェクトを設定するには、Python コードでの単体テストの設定に関するページを参照してください。
ヒント
C# の場合のみ、より高速なメソッドを使用して単体テスト プロジェクトをコードから作成できます。 詳細については、「単体テスト プロジェクトとテスト メソッドを作成する」を参照してください。 .NET Core または .NET Standard でこのメソッドを使用するには、Visual Studio 2019 以降が必要です。
次の図に、.NET でサポートされている MSTest 単体テストを示します。
[次へ] をクリックし、テスト プロジェクトの名前を選択して、[作成] をクリックします。
[次へ] をクリックし、テスト プロジェクトの名前を選択して、[作成] をクリックします。
プロジェクトがソリューションに追加されます。
単体テスト プロジェクトで、[参照] または [依存関係] を右クリックし、[参照の追加] または [プロジェクト参照の追加] を選択して、テストするプロジェクトへの参照を追加します。
テストするコードを含むプロジェクトを選択し、[OK] をクリックします。
単体テスト メソッドにコードを追加します。
たとえば、ご利用のテスト フレームワーク (MSTest、NUnit、.NET でのみサポートされる xUnit、または C++ Microsoft Native Unit Test Framework) に一致する適切なドキュメント タブを選択して、次のコードを使用できます。
using Microsoft.VisualStudio.TestTools.UnitTesting; using System.IO; using System; namespace HelloWorldTests { [TestClass] public class UnitTest1 { private const string Expected = "Hello World!"; [TestMethod] public void TestMethod1() { using (var sw = new StringWriter()) { Console.SetOut(sw); HelloWorld.Program.Main(); var result = sw.ToString().Trim(); Assert.AreEqual(Expected, result); } } } }
単体テストを実行する
テスト エクスプローラーを開きます。
テスト エクスプローラーを開くには、上部のメニュー バーで [テスト]>[テスト エクスプローラー] を選択します (または Ctrl + E、T キーを押します)。
[すべて実行] をクリックして、単体テストを実行します (または Ctrl + R、V キーを押します)。
テストが完了すると、緑色のチェック マークが、テストが成功したことを示します。 赤色の "x" アイコンは、テストが失敗したことを示します。
ヒント
テスト エクスプローラーを使用して、組み込みのテスト フレームワーク (MSTest) またはサードパーティのテスト フレームワークから、単体テストを実行できます。 テストをカテゴリにまとめたり、テストの一覧にフィルターを適用したり、テストのプレイリストを実行したりできます。 テストをデバッグし、テストのパフォーマンスとコード カバレッジを分析することもできます。
ライブ単体テストの結果を表示する (Visual Studio Enterprise)
Visual Studio 2017 以降で MSTest、xUnit、または NUnit テスト フレームワークを使用する場合は、単体テストのライブ結果を表示できます。
Note
次の手順を行うには、Visual Studio Enterprise に加えて、.NET コードのほかに MSTest、xUnit、NUnit のうちいずれか 1 つのテスト フレームワークが必要です。
[テスト]>[Live Unit Testing]>[開始] を選択して、[テスト] メニューでライブ単体テストをオンにします。
コードの作成および編集時に、コード エディター ウィンドウ内でテストの結果を表示します。
そのメソッドをカバーしているテストの名前などの詳細については、テスト結果インジケーターをクリックします。
ライブ単体テストの詳細については、ライブ単体テストに関するページを参照してください。
サードパーティのテスト フレームワークを使用する
ご利用のプログラミング言語に応じて、NUnit、Boost、Google C++ Testing Framework など、サードパーティのテスト フレームワークを利用して、Visual Studio で単体テストを実行できます。 サードパーティのフレームワークを使用するには:
NuGet パッケージ マネージャーを使用して、お好きなフレームワーク用の NuGet パッケージをインストールします。
(.NET) Visual studio 2017 バージョン 14.6 以降、Visual Studio には、NUnit および xUnit テスト フレームワーク用に構成済みのテスト プロジェクト テンプレートが含まれています。 これらのテンプレートには、サポートを有効にするために必要な NuGet パッケージも含まれています。
(C++) Visual Studio 2017 以降のバージョンには、Google C++ Testing Framework などの一部のフレームワークが既に含まれています。 詳細については、「Visual Studio で C/C++ 用の単体テストを作成する」を参照してください。
単体テスト プロジェクトを作成するには:
テストするコードを含むソリューションを開きます。
ソリューション エクスプローラーでソリューションを右クリックし、[追加]>[新しいプロジェクト] を選択します。
単体テスト プロジェクト テンプレートを選択します。
この例では、NUnit を選択します
[次へ] をクリックし、プロジェクトに名前を設定して、[作成] をクリックします。
プロジェクト テンプレートには、NUnit と NUnit3TestAdapter への NuGet 参照が含まれています。
テスト プロジェクトから、テストするコードを含むプロジェクトに参照を追加します。
ソリューション エクスプローラーでプロジェクトを右クリックし、[追加]>[参照] を選択します。 ([参照] ノードまたは [依存関係] ノードの右クリック メニューから参照を追加することもできます。)
テスト メソッドにコードを追加する
テスト エクスプローラーで、またはテスト コードを右クリックして [テストの実行] を選択して、テストを実行します (または Ctrl + R、T キーを押します)。