単体テストの概要

Visual Studio を使用して、単体テストを定義および実行してコードの正常性を維持し、コード カバレッジを保証し、事前にエラーとフォールトを見つけます。 単体テストを頻繁に実行し、コードが正しく動作していることを確認します。

この記事ではコードに C# と C++ を使用しており、図では C# が示されていますが、概念と機能は .NET 言語、C++、Python、JavaScript、TypeScript に適用されます。

単体テストを作成する

このセクションでは、単体テスト プロジェクトの作成方法を説明します。

  1. Visual Studio でテストするプロジェクトを開きます。

    単体テストの例のデモを行うことを目的として、この記事では HelloWorld (C# では HelloWorldCore) という名前のシンプルな "Hello World" C# または C++ Console プロジェクトをテストします。 そのようなプロジェクトのサンプル コードは、次のとおりです。

    namespace HelloWorldCore
    
       public class Program
       {
          public static void Main()
          {
             Console.WriteLine("Hello World!");
          }
       }
    
  2. ソリューション エクスプローラー で、ソリューション ノードを選びます。 次に、上部のメニュー バーで [ファイル] > [追加] > [新しいプロジェクト] を選択します。

  3. [新しいプロジェクト] ダイアログ ボックスで、使用する単体テスト プロジェクトを見つけます。

    検索ボックスに「テスト」と入力し、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 単体テストを示します。

    Visual Studio 2019 の単体テスト プロジェクト テンプレート

    [次へ] をクリックし、テスト プロジェクトの名前を選択して、[作成] をクリックします。

    Visual Studio 2019 の単体テスト プロジェクト テンプレート

    テスト プロジェクトの名前 (HelloWorldTests など) を選択して、 [OK] をクリックします。

    プロジェクトがソリューションに追加されます。

    ソリューション エクスプローラーの単体テスト プロジェクト

  4. 単体テスト プロジェクトで、 [参照] または [依存関係] を右クリックし、 [参照の追加] または [プロジェクト参照の追加] を選択して、テストするプロジェクトへの参照を追加します。

  5. テストするコードを含むプロジェクトを選択し、[OK] をクリックします。

    Visual Studio でプロジェクト参照を追加する

  6. 単体テスト メソッドにコードを追加します。

    たとえば、ご利用のテスト フレームワーク (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);
                HelloWorldCore.Program.Main();
    
                var result = sw.ToString().Trim();
                Assert.AreEqual(Expected, result);
             }
          }
       }
    }
    

単体テストを実行する

  1. テスト エクスプローラーを開きます。

    テスト エクスプローラーを開くには、上部のメニュー バーで [テスト] > [テスト エクスプローラー] を選択します (または Ctrl + ET キーを押します)。

    テスト エクスプローラーを開くには、上部のメニュー バーで [テスト] > [Windows] > [テスト エクスプローラー] を選択します。

  2. [すべて実行] をクリックして、単体テストを実行します (または Ctrl + RV キーを押します)。

    テスト エクスプローラーでの単体テストの実行

    テストが完了すると、緑色のチェック マークが、テストが成功したことを示します。 赤色の "x" アイコンは、テストが失敗したことを示します。

    テスト エクスプローラーで単体テストの結果を確認する

ヒント

テスト エクスプローラーを使用して、組み込みのテスト フレームワーク (MSTest) またはサードパーティのテスト フレームワークから、単体テストを実行できます。 テストをカテゴリにまとめたり、テストの一覧にフィルターを適用したり、テストのプレイリストを実行したりできます。 テストをデバッグし、テストのパフォーマンスとコード カバレッジを分析することもできます。

ライブ単体テストの結果を表示する (Visual Studio Enterprise)

Visual Studio 2017 以降で MSTest、xUnit、または NUnit テスト フレームワークを使用する場合は、単体テストのライブ結果を表示できます。

注意

次の手順を行うには、Visual Studio Enterprise に加えて、.NET コードのほかに MSTest、xUnit、NUnit のうちいずれか 1 つのテスト フレームワークが必要です。

  1. [テスト] > [Live Unit Testing] > [開始] を選択して、[テスト] メニューでライブ単体テストをオンにします。

    ライブ単体テストをオンにする

    Visual Studio 2019 でライブ単体テストを開始する

  2. コードの作成および編集時に、コード エディター ウィンドウ内でテストの結果を表示します。

    テスト結果を表示する

  3. そのメソッドをカバーしているテストの名前などの詳細については、テスト結果インジケーターをクリックします。

    テスト結果インジケーターを選択します。

ライブ単体テストの詳細については、ライブ単体テストに関するページを参照してください。

サードパーティのテスト フレームワークを使用する

ご利用のプログラミング言語に応じて、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++ 用の単体テストを作成する」を参照してください。

単体テスト プロジェクトを作成するには:

  1. テストするコードを含むソリューションを開きます。

  2. ソリューション エクスプローラー でソリューションを右クリックし、[追加] > [新しいプロジェクト] を選択します。

  3. 単体テスト プロジェクト テンプレートを選択します。

    この例では、NUnit を選択します

    Visual Studio 2019 の NUnit テスト プロジェクト テンプレート

    [次へ] をクリックし、プロジェクトに名前を設定して、[作成] をクリックします。

    プロジェクトに名前を設定し、[OK] をクリックして作成します。

    プロジェクト テンプレートには、NUnit と NUnit3TestAdapter への NuGet 参照が含まれています。

    ソリューション エクスプローラーでの NUnit NuGet の依存関係

  4. テスト プロジェクトから、テストするコードを含むプロジェクトに参照を追加します。

    ソリューション エクスプローラー でプロジェクトを右クリックし、[追加] > [参照] を選択します。 ([参照] ノードまたは [依存関係] ノードの右クリック メニューから参照を追加することもできます。)

  5. テスト メソッドにコードを追加する

    コードを単体テスト コード ファイルに追加する

  6. テスト エクスプローラー で、またはテスト コードを右クリックして [テストの実行] を選択して、テストを実行します (または Ctrl + RT キーを押します)。

次のステップ