単体テストの概要

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

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

単体テストを作成する

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

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

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

    namespace HelloWorld
    {
       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 単体テストを示します。

    Unit test project template in Visual Studio 2022

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

    Unit test project template in Visual Studio 2019

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

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

    Unit test project in Solution Explorer

    Unit test project in Solution Explorer

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

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

    Add project reference in Visual Studio

    Add project reference in 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);
                HelloWorld.Program.Main();
    
                var result = sw.ToString().Trim();
                Assert.AreEqual(Expected, result);
             }
          }
       }
    }
    

単体テストを実行する

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

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

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

    Run unit tests in Test Explorer

    Run unit tests in Test Explorer

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

    Review unit test results in Test Explorer

    Review unit test results in Test Explorer

ヒント

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

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

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

Note

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

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

    Start live unit testing in Visual Studio 2019

    Start live unit testing in Visual Studio 2022

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

    View the results of the tests

    View the results of the tests

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

    Choose the test result indicators

    Choose the test result indicators

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

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

ご利用のプログラミング言語に応じて、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 を選択します

    NUnit test project template in Visual Studio 2022

    NUnit test project template in Visual Studio 2019

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

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

    NUnit NuGet dependencies in Solution Explorer

    NUnit NuGet dependencies in Solution Explorer

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

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

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

    Add code to your unit test code file

    Add code to your unit test code file

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

次のステップ