テスト エクスプローラーを使用して単体テストを実行するRun unit tests with Test Explorer

テスト エクスプローラーを使用して、Visual Studio またはサードパーティの単体テスト プロジェクトから単体テストを実行し、テストをカテゴリにグループ化し、テスト リストをフィルター処理し、テストのプレイリストを作成、保存、および実行します。Use Test Explorer to run unit tests from Visual Studio or third-party unit test projects, group tests into categories, filter the test list, and create, save, and run playlists of tests. テストをデバッグし、テストのパフォーマンスとコード カバレッジを分析することもできます。You can also debug tests and analyze test performance and code coverage.

目次 Contents

単体テスト フレームワークとテスト プロジェクトUnit test frameworks and test projects

テスト エクスプローラーでテストを実行するRun tests in Test Explorer

テスト結果を表示するView test results

テスト リストをグループ化およびフィルター処理するGroup and filter the test list

カスタム プレイリストを作成するCreate custom playlists

単体テストをデバッグおよび分析するDebug and analyze unit tests

外部リソースExternal resources

単体テスト フレームワークとテスト プロジェクト Unit test frameworks and test projects

Visual Studio には、マネージ コードおよびネイティブ コード用の Microsoft 単体テスト フレームワークが含まれます。Visual Studio includes the Microsoft unit testing frameworks for both managed and native code. ただし、テスト エクスプローラーでは、テスト エクスプローラーのアダプターを実装した単体テスト フレームワークも実行できます。However, Test Explorer can also run any unit test framework that has implemented a Test Explorer adapter. サードパーティの単体テスト フレームワークのインストールの詳細については、「サードパーティ製の単体テスト フレームワークをインストールする」を参照してください。For more information about installing third-party unit test frameworks, see Install third-party unit test frameworks

テスト エクスプローラーは、ソリューション内の複数のテスト プロジェクト、および運用コード プロジェクトに含まれるテスト クラスからテストを実行できます。Test Explorer can run tests from multiple test projects in a solution and from test classes that are part of the production code projects. テスト プロジェクトは別の単体テスト フレームワークを使用できます。Test projects can use different unit test frameworks. テスト対象のコードを .NET Framework 用に記述する場合、対象コードの言語にかかわらず、.NET Framework も対象とする言語でテスト プロジェクトを記述できます。When the code under test is written for the .NET Framework, the test project can be written in any language that also targets the .NET Framework, regardless of the language of the target code. ネイティブ C/C++ コード プロジェクトは、C++ の単体テスト フレームワークを使用してテストする必要があります。Native C/C++ code projects must be tested by using a C++ unit test framework.

ページのトップへ 内容Back to top Contents

テスト エクスプローラーでテストを実行する Run tests in Test Explorer

テストを実行する | 各ビルドの後にテストを実行するRun tests | Run tests after every build

テスト プロジェクトをビルドすると、テストはテスト エクスプローラーに表示されます。When you build the test project, the tests appear in Test Explorer. テスト エクスプローラーが表示されない場合は、Visual Studio メニューの [テスト] をクリックし、 [Windows][テスト エクスプローラー]の順に選択します。If Test Explorer is not visible, choose Test on the Visual Studio menu, choose Windows, and then choose Test Explorer.

単体テスト エクスプローラーUnit Test Explorer

テストを実行して、記述し、再実行すると、テスト エクスプローラーに [失敗したテスト][成功したテスト][スキップされたテスト] 、および [テストを実行しない]の既定のグループの結果が表示されます。As you run, write, and rerun your tests, Test Explorer displays the results in default groups of Failed Tests, Passed Tests, Skipped Tests and Not Run Tests. テスト エクスプローラーでテストをグループ化する方法を変更できます。You can change the way Test Explorer groups your tests.

テスト エクスプローラーのツール バーからテストの検索、整理、および実行の作業の多くを実行できます。You can perform much of the work of finding, organizing and running tests from the Test Explorer toolbar.

テスト エクスプローラー ツールバーからテストを実行Run tests from the Test Explorer toolbar

ページのトップへ 内容Back to top Contents

テストの実行 Run tests

ソリューション内のすべてのテスト、グループ内のすべてのテスト、または選択した一連のテストを実行できます。You can run all the tests in the solution, all the tests in a group, or a set of tests that you select. 次のいずれかの操作を行います。Do one of the following:

  • ソリューション内のすべてのテストを実行するには、 [すべて実行]をクリックします。To run all the tests in a solution, choose Run All.

  • 既定のグループ内のすべてのテストを実行するには、 [実行] をクリックし、メニューでグループを選択します。To run all the tests in a default group, choose Run... and then choose the group on the menu.

  • 実行する個々のテストを選択し、選択したテストのコンテキスト メニューを開いて、 [選択したテストの実行]を選択します。Select the individual tests that you want to run, open the context menu for a selected test and then choose Run Selected Tests.

  • 個々のテストに実行順序を定める依存関係がない場合、ツール バーにある UTE_parallelicon-small トグル ボタンで並列テストの実行を有効にします。If individual tests have no dependencies that prevent them from being run in any order, turn on parallel test execution with the UTE_parallelicon-small toggle button on the toolbar. これにより、すべてのテスト実行にかかる時間を著しく短縮できます。This can noticeably reduce the time taken to run all the tests.

    テストの実行中、テスト エクスプローラー ウィンドウの一番上にある成功/失敗ステータス バーがアニメーション化されます。The pass/fail bar at the top of the Test Explorer window is animated as the tests run. テストの実行の終了時に、すべてのテストが成功した場合は、成功/失敗ステータス バーが緑色に変わり、いずれかのテストが失敗した場合は、赤色に変わります。At the conclusion of the test run, the pass/fail bar turns green if all tests passed or turns red if any test failed.

    ページのトップへ 内容Back to top Contents

各ビルドの後にテストを実行する Run tests after every build

警告

各ビルドの後の単体テスト実行は、Visual Studio Enterprise でサポートされます。Running unit tests after every build is supported in Visual Studio Enterprise.

ビルド後に実行Run after build 各ローカル ビルドの後で単体テストを実行するには、標準のメニューの [テスト] を選択し、テスト エクスプローラーのツール バーの [ビルド後にテストを実行] を選択します。To run your unit tests after each local build, choose Test on the standard menu, and then choose Run Tests After Build on the Test Explorer toolbar.

ページのトップへ 内容Back to top Contents

テスト結果を表示する View test results

テストの詳細を表示する | テスト メソッドのソース コードを表示するView test details | View the source code of a test method

テストを実行して、記述し、再実行すると、テスト エクスプローラーに [失敗したテスト][成功したテスト][スキップされたテスト] 、および [テストを実行しない]のグループの結果が表示されます。As you run, write, and rerun your tests, Test Explorer displays the results in groups of Failed Tests, Passed Tests, Skipped Tests and Not Run Tests. テスト エクスプローラーの下部の詳細ペインに、テストの実行の概要が表示されます。The details pane at the bottom of Test Explorer displays a summary of the test run.

テストの詳細を表示する View test details

個々のテストの詳細を表示するには、そのテストを選択します。To view the details of an individual test, select the test.

テスト実行の詳細Test execution details

テストの詳細ペインに次の情報が表示されます。The test details pane displays the following information:

  • テスト メソッドのソース ファイル名と行番号。The source file name and the line number of the test method.

  • テストの状態。The status of the test.

  • テスト メソッドの実行に要した経過時間。The elapsed time that the test method took to run.

    テストが失敗した場合、詳細ペインには次の情報も表示されます。If the test fails, the details pane also displays:

  • テストの単体テスト フレームワークによって返されたメッセージ。The message returned by the unit test framework for the test.

  • テストが失敗した時刻のスタック トレース。The stack trace at the time the test failed.

    ページのトップへ 内容Back to top Contents

テスト メソッドのソース コードを表示する View the source code of a test method

Visual Studio エディターのテスト メソッドのソース コードを表示するには、テストを選択し、コンテキスト メニューの [テストを開く] を選択します (キーボードの F12 キー)。To display the source code for a test method in the Visual Studio editor, select the test and then choose Open Test on the context menu (Keyboard: F12).

ページのトップへ 内容Back to top Contents

テスト リストをグループ化およびフィルター処理する Group and filter the test list

テスト リストをグループ化する | 特徴でグループ化する | テスト リストを検索およびフィルター処理するGrouping the test list | Group by traits | Search and filter the test list

テスト エクスプローラーを使用すると、テストを定義済みのカテゴリにグループ化できます。Test Explorer lets you group your tests into predefined categories. テスト エクスプローラーで実行されるほとんどの単体テスト フレームワークでは、独自のカテゴリおよびカテゴリ/値のペアを定義して、テストをグループ化することができます。Most unit test frameworks that run in Test Explorer let you define your own categories and category/value pairs to group your tests. テストのプロパティに対して文字列を照合して、テストの一覧をフィルター処理することもできます。You can also filter the list of tests by matching strings against test properties.

テスト リストをグループ化する Grouping the test list

テストの編成方法を変更するには、[グループ化] ボタン テスト エクスプローラー グループ ボタン の横の下向き矢印をクリックし、新しいグループ化の条件を選択します。To change the way that tests are organized, choose the down arrow next to the Group By button Test Explorer group button and select a new grouping criteria.

テスト エクスプローラーでテストをカテゴリ別にグループ化するGroup tests by category in Test Explorer

テスト エクスプローラーのグループTest Explorer groups

グループ化Group 説明Description
期間Duration 実行時間によるテストのグループ化: [高速][通常]、および [低速]Groups test by execution time: Fast, Medium, and Slow.
OutcomeOutcome 実行結果によるテストのグループ化: [失敗したテスト][スキップされたテスト][成功したテスト]Groups tests by execution results: Failed Tests, Skipped Tests, Passed Tests.
TraitsTraits ユーザーが定義するカテゴリ/値のペアによるテストのグループ化。Groups test by category/value pairs that you define. 特徴のカテゴリと値を指定する構文は、単体テスト フレームワークによって定義されます。The syntax to specify trait categories and values is defined by the unit test framework.
プロジェクトProject プロジェクトの名前によるテストのグループ化。Groups test by the name of the projects.

ページのトップへ 内容Back to top Contents

特徴でグループ化する Group by traits

通常、特徴はカテゴリ名/値のペアですが、1 つのカテゴリにすることもできます。A trait is usually a category name/value pair, but it can also be a single category. 特徴は、単体テスト フレームワークによってテスト メソッドとして識別されるメソッドに割り当てることができます。Traits can be assigned to methods that are identified as a test method by the unit test framework. 単体テスト フレームワークは、特徴のカテゴリを定義できます。A unit test framework can define trait categories. 特徴のカテゴリに値を追加して、独自のカテゴリ名/値のペアを定義できます。You can add values to the trait categories to define your own category name/value pairs. 特徴のカテゴリと値を指定する構文は、単体テスト フレームワークによって定義されます。The syntax to specify trait categories and values is defined by the unit test framework.

マネージ コード用の Microsoft 単体テスト フレームワークでの特徴の定義Traits in the Microsoft Unit Testing Framework for Managed Code

マネージ アプリケーション用の Microsoft 単体テスト フレームワークで、 <xref:Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute> 属性の特徴の名前/値のペアを定義します。In the Microsoft unit test framework for managed apps, you define a trait name/ value pair in a <xref:Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute> attribute. テスト フレームワークには、次の定義済みの特徴も含まれています。The test framework also contains these predefined traits:

特徴Trait 説明Description
<xref:Microsoft.VisualStudio.TestTools.UnitTesting.OwnerAttribute> 所有者カテゴリは、単体テスト フレームワークによって定義されます。所有者の文字列値を指定する必要があります。The Owner category is defined by the unit test framework and requires you to provide a string value of the owner.
<xref:Microsoft.VisualStudio.TestTools.UnitTesting.PriorityAttribute> 優先度カテゴリは、単体テスト フレームワークによって定義されます。優先度の整数値を指定する必要があります。The Priority category is defined by the unit test framework and requires you to provide an integer value of the priority.
<xref:Microsoft.VisualStudio.TestTools.UnitTesting.TestCategoryAttribute> TestCategory 属性を使用すると、値なしでカテゴリを指定できます。The TestCategory attribute enables you to provide a category without a value. TestCategory 属性で定義されるカテゴリは、TestProperty 属性のカテゴリでもあります。A category defined by the TestCategory attribute can also be the category of a TestProperty attribute.
<xref:Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute> TestProperty 属性を使用すると、特徴のカテゴリ/値のペアを定義できます。The TestProperty attribute enables you to define trait category/value pair.

C++ 用の Microsoft 単体テスト フレームワークでの特徴の定義Traits in the Microsoft Unit Testing Framework for C++

特徴を定義するには、 TEST_METHOD_ATTRIBUTE マクロを使用します。To define a trait, use the TEST_METHOD_ATTRIBUTE macro. たとえば、特徴 TEST_MY_TRAITを定義するには、次のように記述します。For example, to define a trait named TEST_MY_TRAIT:

#define TEST_MY_TRAIT(traitValue) TEST_METHOD_ATTRIBUTE(L"MyTrait", traitValue)  

定義された特徴を単体テストで使用するには、次のように記述します。To use the defined trait in your unit tests:

BEGIN_TEST_METHOD_ATTRIBUTE(Method1)  
    TEST_OWNER(L"OwnerName")  
    TEST_PRIORITY(1)  
    TEST_MY_TRAIT(L"thisTraitValue")  
END_TEST_METHOD_ATTRIBUTE()  

TEST_METHOD(Method1)  
{     
    Logger::WriteMessage("In Method1");  
    Assert::AreEqual(0, 0);  
}  

C++ の特徴の属性マクロC++ trait attribute macros

マクロMacro 説明Description
TEST_METHOD_ATTRIBUTE(attributeName, attributeValue) TEST_METHOD_ATTRIBUTE マクロを使用して、特徴を定義します。Use the TEST_METHOD_ATTRIBUTE macro to define a trait.
TEST_OWNER(ownerAlias) 定義済みの所有者の特徴を使用して、テスト メソッドの所有者を指定します。Use the predefined Owner trait to specify an owner of the test method.
TEST_PRIORITY(priority) 定義済みの優先度の特徴を使用して、テスト メソッドに相対的な優先度を割り当てます。Use the predefined Priority trait to assign relative priorities to your test methods.

ページのトップへ 内容Back to top Contents

テスト リストを検索およびフィルター処理する Search and filter the test list

テスト エクスプローラーのフィルターを使用して、表示および実行するプロジェクトのテスト メソッドを制限できます。You can use Test Explorer filters to limit the test methods in your projects that you view and run.

テスト エクスプローラーの検索ボックスに文字列を入力して Enter キーを押すと、完全修飾名にその文字列が含まれるテストだけを表示するようにテスト リストがフィルター処理されます。When you type a string in in the Test Explorer search box and choose ENTER, the test list is filtered to display only those tests whose fully qualified names contain the string.

異なる条件でフィルター処理するにはTo filter by a different criteria:

  1. 検索ボックスの右にあるドロップダウン リストを開きます。Open the drop-down list to the right of the search box.

  2. 新しい条件を選択します。Choose a new criteria.

  3. 引用符の間にフィルターの値を入力します。Enter the filter value between the quotation marks.

    テスト エクスプローラーでテストをフィルター処理するFilter tests in Test Explorer

注意

検索では大文字と小文字を区別せず、指定された文字列が条件の値の一部と一致するかどうかを照合します。Searches are case insensitive and match the specified string to any part of the criteria value.

修飾子Qualifier 説明Description
特徴Trait 特徴のカテゴリと値の両方から一致を検索します。Searches both trait category and value for matches. 特徴のカテゴリと値を指定する構文は、単体テスト フレームワークによって定義されます。The syntax to specify trait categories and values are defined by the unit test framework.
プロジェクトProject テスト プロジェクト名から一致を検索します。Searches the test project names for matches.
エラー メッセージError Message 失敗したアサートが返すユーザー定義エラー メッセージから一致を検索します。Searches the user-defined error messages returned by failed asserts for matches.
ファイル パスFile Path テストのソース ファイルの完全修飾ファイル名から一致を検索します。Searches the fully qualified file name of test source files for matches.
Fully Qualified NameFully Qualified Name テストの名前空間、クラス、およびメソッドの完全修飾ファイル名から一致を検索します。Searches the fully qualified file name of test namespaces, classes, and methods for matches.
出力Output 標準出力 (stdout) または標準エラー (stderr) に書き込まれるユーザー定義のエラー メッセージを検索します。Searches the user-defined error messages that are written to standard output (stdout) or standard error (stderr). 出力メッセージを指定する構文は、単体テスト フレームワークによって定義されます。The syntax to specify output messages are defined by the unit test framework.
OutcomeOutcome テスト エクスプローラーのカテゴリ名から一致を検索します: [失敗したテスト][スキップされたテスト][成功したテスト]Searches the Test Explorer category names for matches: Failed Tests, Skipped Tests, Passed Tests.

フィルター処理結果のサブセットを除外するには、次の構文を使用します。To exclude a subset of the results of a filter, use the following syntax:

FilterName:"Criteria" -FilterName:"SubsetCriteria"  

次に例を示します。For example,

FullName:"MyClass" - FullName:"PerfTest"  

名前に "PerfTest" も含むテストを除いて、名前に "MyClass" を含むすべてのテストを返します。returns all tests that include "MyClass" in their name except those tests that also include "PerfTest" in their name.

ページのトップへ 内容Back to top Contents

カスタム プレイリストを作成する Create custom playlists

グループとして実行または表示するテストのリストを作成して保存できます。You can create and save a list of tests that you want to run or view as a group. プレイリストを選択すると、リスト内のテストがテスト エクスプローラーに表示されます。When you select a playlist, the tests in the list are displayed Test Explorer. テストを複数のプレイリストに追加することができ、既定の [すべてのテスト] プレイリストを選択すると、プロジェクトのすべてのテストを使用できます。You can add a test to more than one playlist, and all tests in your project are available when you choose the default All Tests playlist.

プレイリストの選択Choose a playlist

プレイリストを作成するには、テスト エクスプローラーで 1 つ以上のテストを選択します。To create a playlist, choose one or more tests in Test Explorer. コンテキスト メニューで、 [プレイリストに追加][新しいプレイリスト]を選択します。On the context menu, choose Add to Playlist, NewPlaylist. [新しいプレイリストの作成] ダイアログ ボックスで指定した場所と名前で、ファイルを保存します。Save the file with the name and location that you specify in the Create New Playlist dialog box.

プレイリストにテストを追加するには、テスト エクスプローラーで 1 つ以上のテストを選択します。To add tests to a playlist, choose one or more tests in Test Explorer. コンテキスト メニューで、 [プレイリストに追加]をクリックし、テストを追加するプレイリストを選択します。On the context menu, choose Add to Playlist, and then choose the playlist that you want to add the tests to.

プレイリストを開くには、Visual Studio メニューから [テスト]、[プレイリスト] を選択し、最近使用されたプレイリストのリストから選択するか、[プレイリストを開く] を選択してプレイリストの名前と場所を指定します。To open a playlist, choose Test, Playlist from the Visual Studio menu, and either choose from the list of recently used playlists, or choose Open Playlist to specify the name and location of the playlist.

個々のテストに実行順序を定める依存関係がない場合、ツール バーにある UTE_parallelicon-small トグル ボタンで並列テストの実行を有効にします。If individual tests have no dependencies that prevent them from being run in any order, turn on parallel test execution with the UTE_parallelicon-small toggle button on the toolbar. これにより、すべてのテスト実行にかかる時間を著しく短縮できます。This can noticeably reduce the time taken to run all the tests.

ページのトップへ 内容Back to top Contents

単体テストをデバッグおよび分析する Debug and analyze unit tests

単体テストをデバッグする | テスト メソッドのパフォーマンスの問題を診断する | 単体テストのコード カバレッジを分析するDebug unit tests | Diagnose test method performance issues | Analyze unit test code coverage

単体テストをデバッグする Debug unit tests

テスト エクスプローラーを使用して、テストのデバッグ セッションを開始できます。You can use Test Explorer to start a debugging session for your tests. Visual Studio デバッガーを使用してコードをシームレスにステップ実行すると、テスト対象のプロジェクトと単体テストの間を切り替えることができます。Stepping through your code with the Visual Studio debugger seamlessly takes you back and forth between the unit tests and the project under test. デバッグを開始するには:To start debugging:

  1. Visual Studio エディターで、デバッグする 1 つ以上のテスト メソッドにブレークポイントを設定します。In the Visual Studio editor, set a breakpoint in one or more test methods that you want to debug.

    注意

    テスト メソッドを任意の順序で実行できるため、デバッグするすべてのテスト メソッドにブレークポイントを設定します。Because test methods can run in any order, set breakpoints in all the test methods that you want to debug.

  2. テスト エクスプローラーでテスト メソッドを選択し、コンテキスト メニューの [選択したテストのデバッグ] を選択します。In Test Explorer, select the test methods and then choose Debug Selected Tests on the context menu.

    デバッガーの詳細については、「Visual Studio でのデバッグ」を参照してください。For more information, about the debugger, see Debugging in Visual Studio.

    ページのトップへ 内容Back to top Contents

テスト メソッドのパフォーマンスの問題を診断する Diagnose test method performance issues

テスト メソッドに時間がかかる原因を診断するには、エクスプローラーでメソッドを選択し、コンテキスト メニューの [プロファイル] を選択します。To diagnose why a test method is taking too much time, select the method in Test Explorer and then choose Profile on the context menu. パフォーマンス エクスプローラー」を参照してください。See Performance Explorer.

単体テストのコード カバレッジを分析する Analyze unit test code coverage

注意

単体テストのコード カバレッジは、Visual Studio Enterprise でのみ使用できます。Unit test code coverage is available only in Visual Studio Enterprise.

Visual Studio のコード カバレッジ ツールを使用して、単体テストで実際にテスト中の製品コードの量を確認できます。You can determine the amount of your product code that is actually being tested by your unit tests by using the Visual Studio code coverage tool. 選択したテストまたはソリューションのすべてのテストのコード カバレッジを実行できます。You can run code coverage on selected tests or on all tests in a solution.

ソリューションのテスト メソッドのコード カバレッジを実行するには:To run code coverage for test methods in a solution:

  1. Visual Studio メニューの [テスト] を選択し、 [コード カバレッジの分析]を選択します。Choose Tests on the Visual Studio menu and then choose Analyze code coverage.

  2. サブメニューから次のいずれかのコマンドを選択します。Choose one of the following commands from the sub-menu:

    • [選択されたテスト] : テスト エクスプローラーで選択したテスト メソッドを実行します。Selected tests runs the test methods that you have selected in Test Explorer.

    • [All tests (すべてのテスト)] : ソリューション内のすべてのテスト メソッドを実行します。All tests runs all the test methods in the solution.

    [コード カバレッジの結果] ウィンドウに、行、関数、クラス、名前空間、およびモジュールで実行された製品コードのブロックのパーセンテージが表示されます。The Code Coverage Results window displays the percentage of the blocks of product code that were exercised by line, function, class, namespace and module.

    詳細については、「コード カバレッジを使用した、テストされるプロジェクトのコード割合の確認」を参照してください。For more information, see Using Code Coverage to Determine How Much Code is being Tested.

    ページのトップへ 内容Back to top Contents

外部リソース External resources

ガイダンス Guidance

Visual Studio 2012 を使用した継続的配信のためのテスト - 第 2 章: 単体テスト: 内部のテストTesting for Continuous Delivery with Visual Studio 2012 - Chapter 2: Unit Testing: Testing the Inside

関連項目See Also

コードの単体テスト Unit Test Your Code
64 ビット プロセスとして単体テストを実行するRun a unit test as a 64-bit process