Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
In this article, you will learn about the APIs and conventions used by MSTest to help you write and shape your tests.
Attributes
MSTest uses custom attributes to identify and customize tests.
To help provide a clearer overview of the testing framework, this section organizes the members of the Microsoft.VisualStudio.TestTools.UnitTesting namespace into groups of related functionality.
Note
Attribute elements, whose names end with "Attribute", can be used with or without "Attribute" at the end. Attributes that have parameterless constructor, can be written with or without parenthesis. The following code examples work identically:
[TestClass()]
[TestClassAttribute()]
[TestClass]
[TestClassAttribute]
MSTest attributes are divided into the following categories:
- Attributes used to identify test classes and methods
- Attributes used for data-driven testing
- Attributes used to provide initialization and cleanups
- Attributes used to control test execution
- Utilities attributes
- Metadata attributes
Assertions
Use the Assert classes of the Microsoft.VisualStudio.TestTools.UnitTesting namespace to verify specific functionality. A test method exercises the code of a method in your application's code, but it reports the correctness of the code's behavior only if you include Assert statements.
MSTest assertions are divided into the following classes:
The TestContext
class
The TestContext class provides contextual information and support for test execution, making it easier to retrieve information about the test run and manipulate aspects of the environment. It's defined in the Microsoft.VisualStudio.TestTools.UnitTesting namespace and is available when using the MSTest Framework.
For more information, see Accessing the TestContext
object or The TestContext
members.
Testing private members
You can generate a test for a private method. This generation creates a private accessor class, which instantiates an object of the PrivateObject class. The PrivateObject class is a wrapper class that uses reflection as part of the private accessor process. The PrivateType class is similar, but is used for calling private static methods instead of calling private instance methods.