単体テストでの MSTest フレームワークの使用Use the MSTest framework in unit tests

MSTest フレームワークは、Visual Studio での単体テストをサポートしています。The MSTest framework supports unit testing in Visual Studio. 単体テストをコーディングするときに、Microsoft.VisualStudio.TestTools.UnitTesting 名前空間のクラスとメンバーを使用します。Use the classes and members in the Microsoft.VisualStudio.TestTools.UnitTesting namespace when you are coding unit tests. コードから生成された単体テストを調整するときにも、それらを使用できます。You can also use them when you are refining a unit test that was generated from code.

フレームワークのメンバーFramework members

単体テスト フレームワークの概要をより明確に説明するために、このセクションでは、Microsoft.VisualStudio.TestTools.UnitTesting 名前空間のメンバーを関連する機能グループごとにまとめています。To help provide a clearer overview of the unit testing framework, this section organizes the members of the Microsoft.VisualStudio.TestTools.UnitTesting namespace into groups of related functionality.

注意

名前が "Attribute" で終わる属性要素は、使用するときに末尾に "Attribute" を付けても付けなくてもかまいません。Attribute elements, whose names end with "Attribute", can be used either with or without "Attribute" on the end. たとえば、次の 2 つのコード例は同じように機能します。For example, the following two code examples function identically:

[TestClass()]

[TestClassAttribute()]

データ ドリブン テストで使用する要素Members used for data-driven testing

データ ドリブン単体テストを設定するには、次の要素を使用します。Use the following elements to set up data-driven unit tests. 詳細については、「データ ドリブン単体テストを作成する」および「データ ソースを定義するための構成ファイルの使用」を参照してください。For more information, see Create a Data-Driven Unit Test and Use a Configuration File to Define a Data Source.

呼び出し順序を確立するために使用する属性Attributes used to establish a calling order

次のいずれかの属性で装飾されたコード要素は、指定した時点で呼び出されます。A code element decorated with one of the following attributes is called at the moment you specify. 詳細については、「単体テストの構造」を参照してください。For more information, see Anatomy of a Unit Test.

アセンブリの属性Attributes for assemblies

AssemblyInitialize がアセンブリの読み込みの直後に、AssemblyCleanup がアセンブリのアンロードの直前に呼び出されます。AssemblyInitialize and AssemblyCleanup are called right after your assembly is loaded and right before your assembly is unloaded.

クラスの属性Attributes for classes

ClassInitialize がクラスの読み込みの直後に、ClassCleanup がクラスのアンロードの直前に呼び出されます。ClassInitialize and ClassCleanup are called right after your class is loaded and right before your class is unloaded.

テスト メソッドの属性Attributes for test methods

テスト クラスとテスト メソッドの識別に使用する属性Attributes used to identify test classes and methods

すべてのテスト クラスには TestClass 属性が必要であり、すべてのテスト メソッドには TestMethod 属性が必要です。Every test class must have the TestClass attribute, and every test method must have the TestMethod attribute. 詳細については、「単体テストの構造」を参照してください。For more information, see Anatomy of a Unit Test.

単体テストでは、さまざまな種類のアサーション、例外、および属性を使用して、特定のアプリケーションの動作を確認できます。Unit tests can verify specific application behavior by their use of various kinds of assertions, exceptions, and attributes. 詳細については、「Assert クラスの使用」を参照してください。For more information, see Using the Assert Classes.

TestContext クラスThe TestContext class

次の属性とそれらに割り当てられた値は、Visual Studio Properties で特定のテスト メソッドの [プロパティ] ウィンドウに表示されます。The following attributes and the values assigned to them appear in the Visual Studio Properties window for a particular test method. これらの属性は、単体テストのコードからアクセスするためのものではありません。These attributes are not meant to be accessed through the code of the unit test. 代わりに、Visual Studio の IDE、または Visual Studio テスト エンジンのいずれかによる単体テストの使用法または実行方法に影響します。Instead, they affect the ways the unit test is used or run, either by you through the IDE of Visual Studio, or by the Visual Studio test engine. たとえば、これらの属性には、[テスト マネージャー] ウィンドウや [テスト結果] ウィンドウの列として表示されるものがあり、それらを使用してテストやテスト結果をグループ化したり並べ替えたりできます。For example, some of these attributes appear as columns in the Test Manager window and Test Results window, which means that you can use them to group and sort tests and test results. このような属性の 1 つに TestPropertyAttribute があります。この属性を使用して、任意のメタデータを単体テストに追加できます。One such attribute is TestPropertyAttribute, which you use to add arbitrary metadata to unit tests. たとえば、これを使用し、単体テストを [TestProperty("TestPass", "Accessibility")] とマークして、このテストの対象となるテスト パスの名前を格納できます。For example, you could use it to store the name of a test pass that this test covers, by marking the unit test with [TestProperty("TestPass", "Accessibility")]. または、[TestProperty("TestKind", "Localization")] を使用して、テストの種類のインジケーターを格納できます。Or, you could use it to store an indicator of the kind of test it is with [TestProperty("TestKind", "Localization")]. この属性を使用して作成するプロパティ、および割り当てるプロパティ値は、どちらも Visual Studio の [プロパティ] ウィンドウの [各テストで特有] という見出しの下に表示されます。The property you create by using this attribute, and the property value you assign, are both displayed in the Visual Studio Properties window under the heading Test specific.

テスト構成クラスTest configuration classes

レポートの生成に使用される属性Attributes used to generate reports

このセクションの属性は、それらの属性が装飾するテスト メソッドを Team Foundation Server チーム プロジェクトのプロジェクト階層内のエンティティに関連付けます。The attributes in this section relate the test method that they decorate to entities in the project hierarchy of a Team Foundation Server team project.

プライベート アクセサーと共に使用するクラスClasses used with private accessors

プライベート メソッドの単体テストを生成できます。You can generate a unit test for a private method. 生成するとプライベート アクセサー クラスが作成され、このクラスにより、PrivateObject クラスのオブジェクトがインスタンス化されます。This generation creates a private accessor class, which instantiates an object of the PrivateObject class. PrivateObject クラスは、プライベート アクセサー プロセスの一部としてリフレクションを使用するラッパー クラスです。The PrivateObject class is a wrapper class that uses reflection as part of the private accessor process. これは PrivateType クラスに似ていますが、PrivateType クラスは、プライベート インスタンス メソッドの呼び出しではなく、プライベート静的メソッドの呼び出しに使用されます。The PrivateType class is similar, but is used for calling private static methods instead of calling private instance methods.

関連項目See also