Write tests with MSTest
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:
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.