Unit test tools and tasks
Applies to: Visual Studio Visual Studio for Mac
This article applies to Visual Studio 2017. If you're looking for the latest Visual Studio documentation, see Visual Studio documentation. We recommend upgrading to the latest version of Visual Studio. Download it here
Unit tests give developers and testers a quick way to look for logic errors in the methods of classes in C#, Visual Basic, and C++ projects.
The unit test tools include:
Test Explorer—Run unit tests and see their results in Test Explorer. You can use any unit test framework, including a third-party framework, that has an adapter for Test Explorer.
Microsoft unit test framework for managed code—The Microsoft unit test framework for managed code is installed with Visual Studio and provides a framework for testing .NET code.
Microsoft Native Unit Test Framework—The Microsoft Native Unit Test Framework for C++ is installed as part of the Desktop development with C++ workload. It provides a framework for testing native code. Google Test, Boost.Test, and CTest frameworks are also included, and third-party adapters are available for additional test frameworks. For more information, see Write unit tests for C/C++.
Code coverage tools—You can determine the amount of product code that your unit tests exercise from one command in Test Explorer.
Microsoft Fakes isolation framework—The Microsoft Fakes isolation framework can create substitute classes and methods for production and system .NET code that create dependencies in the code under test. By implementing the fake delegates for a function, you control the behavior and output of the dependency object.
For .NET, you can also use IntelliTest to explore your code and generate test data and a suite of unit tests. For every statement in the code, a test input is generated that will execute that statement. A case analysis is performed for every conditional branch in the code.
Use the following articles to help with understanding and creating unit tests:
|Tutorials: Learn about unit testing in Visual Studio from code examples.||- Get started with unit testing
- Test-driven development with Test Explorer
|Unit testing with Test Explorer: Learn how Test Explorer can help create more productive and efficient unit tests.||- Unit test basics
- Create a unit test project
- Run unit tests with Test Explorer
- Install third-party unit test frameworks
|Unit test .NET code||- Create and run unit tests for .NET code|
|Unit test C++ code||- Write unit tests for C/C++
- How to: Add unit tests to C++ apps
|Use code coverage to identify what proportion of your project's code is tested: Learn about the code coverage feature of Visual Studio testing tools.||- Use code coverage to determine how much code is being tested|
|Isolating unit tests||- Isolate .NET code under test with Microsoft Fakes|
|Perform stress and performance analysis by using load tests: Learn how to create load tests to help isolate performance and stress issues in your application (deprecated).||- Quickstart: Create a load test project
- Load testing (Azure Test Plans and TFS)
|Set quality gates: Learn how to create quality gates to enforce that tests are run before code is checked in or merged.||- Check-in policies (Azure Repos TFVC)|
|Set testing options: Learn how to configure test options, for example, where test results are stored.||Configure unit tests by using a .runsettings file|
API reference documentation
- Microsoft.VisualStudio.TestTools.UnitTesting describes the UnitTesting namespace, which provides attributes, exceptions, asserts, and other classes that support unit testing.
- Microsoft.VisualStudio.TestTools.UnitTesting.Web describes the UnitTesting.Web namespace, which extends the UnitTesting namespace by providing support for ASP.NET and web service unit tests.