Visual Studio Unit Test

Unit Test Project (.NET Framework) There is a project type in Visual Studio that is dedicated to creating tests. This is appropriately named the Unit Test Project. We would want to use this type of project to create tests that verify the classes we build work as intended. The unit test project type creates a new assembly with the test code we. 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.

Studio

ReSharper | Windows | Unit Test Sessions
ReSharper | Unit Tests | Unit Test Sessions
Control+Alt+R

ReSharper's unit test runner does not allow running two or more tests with the same ID. This rarely happens in practice, but if you do have tests with the same ID, they will appear as a single node in the Unit Tests explorer and Unit Test Sessions window, and only one of them will run.
Note that test frameworks identify tests in different ways. For example, MSTest uses test-methods FQNs but NUnit uses properties of test attributes as test IDs.

ReSharper runs unit tests in the Unit Test Sessions window. The window appears automatically when you run tests from the current document or from the project or solution. For more information, see Unit Test Sessions.

The window is designed to help you run any number of unit test sessions, simultaneously and independently of each other. Sessions can be composed of any combination of tests. In the debugging mode, only one session can be run at a time.

The unit test tree shows the structure of tests belonging to a session, which you can filter to show only passed, failed or ignored unit tests. You can navigate to the code of any unit test by double-clicking it.

Visual Studio Unit Test

Status bar and progress bar

The progress bar and the status bar under the toolbar display the current progress.

On the status bar, you can see the total number of tests in the session as well as number of tests in different states:

By default, tests in all states are shown, but you can click the corresponding icons to filter tests by their state. You can also Ctrl -click several icons to display tests in several different states.

Visual Studio Unit Tests

ControlNameDescription
All TestsShow all tests in the current test session.
Passed TestsOnly show successful tests and hide all other tests.
Failed TestsOnly show failed tests and hide all other tests.
Ignored TestsOnly show ignored tests and hide all other tests. A test is ignored if it has the corresponding attribute, or if the whole category where it belongs is ignored.
Unknown TestsOnly show tests that either were not executed or have changed since the last execution.
Execution logLets you see either the number of test execution errors (related to the execution process, not tests themselves) or shows OK if there are no errors.
You can click this icon to show or hide the execution log.

Window tabs

When unit test sessions open in the window, they are displayed in new tabs, which show up on the left. The previously open tabs move to the right if the width of the window allows, otherwise they unload themselves saving memory - but you can always restore them by clicking the arrow that appears to the right of the tabs and clicking the required tab:

To prevent a tab from unloading, click the pin icon next to the tab title.

Toolbar Controls

Visual Studio Unit Tests Not Running

ControlNameDescription
Repeat Previous RunControl+T TRepeats the previous test run.
Run Current SessionControl+T Y

Runs all tests in the tree.

You can use the integrated drop-down selector for other actions

Cover Current SessionControl+T IRuns coverage analysis for all unit tests in the test session.

This button appears if JetBrains dotCover is integrated with Visual Studio.

Profile Current SessionStarts performance profiling for all tests in the current session.

This button appears if JetBrains dotTrace is integrated with Visual Studio.

Run Current Session under dotMemory UnitRuns all tests in the current tree with dotMemory Unit enabled. Use this button to run tests that use dotMemory Unit framework to check code for memory issues.
Run Unit TestsControl+T R

Runs selected tests. To select multiple tests, click them holding the Ctrl key.

You can use the integrated drop-down selector for other actions on the selected tests:

Cover Unit TestsControl+T HBy clicking this button, you can start code coverage of the selected tests.

This button appears if JetBrains dotCover is integrated with Visual Studio.

Profile Unit TestsBy clicking this button, you can profile selected tests.

This button appears if JetBrains dotTrace is integrated with Visual Studio.

Run Unit Tests under dotMemory UnitControl+T MRuns selected tests with dotMemory Unit enabled. Use this button to run tests that use dotMemory Unit framework to check code for memory issues.
Run Unit Tests Until FailClick this button to keep automatically starting and running selected tests until one of the tests fails.
Debug Unit TestsControl+T DStarts debugging for selected tests in the current session.
Stop ExecutionStops the current test session.
Autostart Tests on Build|Save: Run All TestsEnables continuous testing for the current unit test session. All tests in the session will be automatically run on explicit user action: build or save (selected in continuous testing settings).
Autostart Tests on Build|Save: Run New and Outdated TestsEnables continuous testing for the current unit test session. Only new and outdated tests in the session will be automatically run on explicit user action: build or save (selected in continuous testing settings).
Autostart Tests on Build|Save: Cover New and Outdated TestsEnables continuous testing for the current unit test session. New and outdated tests in the session will be automatically run with enabled coverage analysis on explicit user action: build or save (selected in continuous testing settings).
Track Running TestIf this button is on, the selection in the list of tests is switched automatically to the test that is currently executing.
Auto Scroll Output When Running TestThis button enables the output pane to scroll when the test is running so that the end of the output is always visible.
Remove Selected TestsDeleteRemoves selected tests from the current session.
Export SessionClick to save the current test session in a .testsession file.
Import SessionClick to open a test session that you have previously saved in a .testsession file.
Expand All/ Collapse AllExpands/collapses all nodes in the current tab.
Previous/ Next
Shift+F8/ F8
Navigate to the previous/next item and scrolls through the source code accordingly.
Show OutputCtrl+P

This selector allows you to open the Output and the Coverage panes and place them to the bottom or to the right of the window.

The Output pane lets you analyze test results and navigate from a failed test's output to the code lines that originated the assertion or exception, all with a single click.

The Coverage pane displays the code coverage tree and appears if JetBrains dotCover is integrated with ReSharper.

Options

You can configure this set of preferences individually for each test session.

  • Build Policy — Specifies whether building is required before executing tests. Provides several options:
    • Automatic (selected by default) — Before executing tests, ReSharper will rebuild all projects that are related to the current test session and that have changes since the last execution.

    • Automatic (whole solution) — Before executing tests, ReSharper will rebuild all projects in your solution that have changes since the last execution.

    • Never Build — ReSharper will not build anything before executing tests. If you choose this option, you will have to make sure all related projects are built.

  • Lock Session — Locks the current test session to prevent automatically adding new tests to this session.

  • Show Time — Allows you to show or hide execution time for each item in the test session.

  • Platform — Lets you explicitly specify platform architecture (x86 or x64) of the test runner or choose Automatic to use platform architecture corresponding to the project settings.

  • Framework — Lets you explicitly specify the .NET framework (CLR) version of the test runner or choose Automatic to use the latest installed version.

  • Group by — Allows grouping items in the window by different categories.

Show Stack Trace in a new WindowCtrl+Shift+Alt+EOpens the output of the currently selected test in a new tab of the Stack Trace Explorer window.
Reference dotMemory Unit FrameworkInstalls the dotMemory Unit Testing Framework NuGet package and references it in the unit test project where the selected test belongs.

This button appears if JetBrains dotMemory is integrated with Visual Studio.