JetBrains Rider 2023.3 Help

Navigate between tests and tested code

JetBrains Rider helps you navigate between unit tests and tested code. When your caret is at the name of a class or anywhere within its declaration, you can press Ctrl+T, G to navigate to related tests and vice versa, by pressing this shortcut on a test, you will jump to the tested class.

This navigation is also available in the Navigate To Ctrl+Shift+G menu: select Test Subject if you navigate from a unit test, and Related Tests when you navigate from a tested class.

For navigating to and from unit tests, JetBrains Rider establishes links between test classes and the corresponding tested classes. There are several approaches to linking tests and tested classes: all of them are used by default, and you can configure them on the Build, Execution, Deployment | Unit Testing | Test Linker page of JetBrains Rider settings Ctrl+Alt+S:

Use affix search

JetBrains Rider links test classes whose names start or end with the specified affixes to the corresponding classes in tested code. Clear this checkbox to ignore test class names and use other heuristics for navigation.

Use attribute-based search

JetBrains Rider links test classes annotated with a specific attribute to the corresponding classes in tested code.

JetBrains Rider always takes into account the [TestSubject] attribute from JetBrains.Annotations. For example, if you navigate from a class named SampleClass, tests annotated with [TestSubject(typeof(SampleClass))] will be suggested as navigation destinations.

If you annotate tests with another attribute to link them to tested classes, specify the fully-qualified name of this attribute to take it into account in addition to [TestSubject]. Note that you can only specify one attribute per solution.

Clear this checkbox to ignore attributes and use other heuristics for navigation.

Use generic argument search

JetBrains Rider links test classes with tested classes when the base test class has a generic parameter that represents the tested class, and this generic parameter is annotated with a specifc attribute.

Consider the following example:

[TestFixture] public abstract class TestsFor<[MeansTestSubject] T> { private AutoMock myMock; public T Component => myMock.Create<T>(); } public class TestsForSampleClass : TestsFor<SampleClass> { [Test] public void TestSample() { Component.DoSomething(); } }

In this example, generic parameter T is annotated with the [MeansTestSubject] attribute from JetBrains.Annotations. This attribute is always taken into account in such scenarios. If you use another attribute for these purposes, specify its fully-qualified name to take it into account in addition to [MeansTestSubject]. Note that you can only specify one attribute per solution.

Clear this checkbox to ignore generic arguments and use other heuristics for navigation.

Last modified: 01 March 2024