---
title: "Testing"
description: "Run tests from the gutter, read results in the test tree, rerun failed tests and jump between code and tests."
---
OpenIDEA runs tests with the project's own test tool (Cargo, Jest, pytest, Maven, Gradle, `go test`, `dotnet test`…) and reads its output into a test tree. There is nothing to install beyond what the project already uses.
## Run tests
Click the ▶ icon next to a test, a test class or a test module and choose **Run '…'** or **Debug '…'**. After a run,
the icon turns green or red to show that test's last result.
**Run › Run Context Configuration** (`⌃⇧R` / `Ctrl+Shift+F10`) runs the test at the caret, or all tests in the
current file.
Right-click a test directory in the Project view and choose **Run '…'** to run the tests inside it.
Run a detected test configuration such as `cargo test`, `go test ./...`, `pytest` or the `test` script of
`package.json` from the run widget.
Running a single test creates a temporary run configuration based on the project's detected test configuration (for example the `test` script for Jest, or the Maven / Gradle build for JUnit). See [Run configurations](/en/guide/run) to save it or change its options.
## Supported test frameworks
| Language | Gutter icons on | Runs with |
| --------------------------- | --------------------------------------------------------------------------------------------- | -------------------------------------------------------------- |
| Rust | `#[test]` functions, `mod tests` | `cargo test`, `cargo nextest` |
| JavaScript / TypeScript | `test`, `it`, `describe`, `suite`, `context` (also `.each`, `.only`, `.skip`) | Jest or Vitest through the project's test script; Deno and Bun |
| Python | pytest `def test_*` and `class Test*`, unittest `TestCase` subclasses | pytest, Django `manage.py test` |
| Go | `func TestX(t *testing.T)`, benchmarks | `go test` |
| Java, Kotlin, Scala, Groovy | JUnit `@Test`, `@ParameterizedTest`, `@RepeatedTest`, `@TestFactory`, `@TestTemplate`; TestNG | Maven Surefire (`-Dtest=`) or Gradle (`--tests`) |
| PHP | PHPUnit test classes and methods, Pest `test` / `it` / `describe` | PHPUnit, Pest |
| Ruby | Minitest and Test::Unit classes, modules that hold them, `def test_*` | Minitest through `ruby` or `rake test` |
| C# | xUnit `[Fact]` / `[Theory]`, NUnit `[Test]` / `[TestCase]`, MSTest `[TestMethod]` | `dotnet test` (VSTest or Microsoft.Testing.Platform) |
RSpec has its own configuration type (**RSpec**) and a detected `rspec` configuration, but no gutter icons. Plugins can add test frameworks and report their results to the same test tree.
For .NET projects that use Microsoft.Testing.Platform, run **Install TRX reporting** from the .NET tool window so
results show in the test tree. See [Build tools](/en/guide/build-tools).
## The test results view
A test run opens a tab in the **Run** tool window with the test tree next to the console. Failed suites expand automatically.
- Click a test to see its own output in the console, or a class or suite to see its setup and teardown output followed by its tests'. **Show all output** above the console goes back to the whole run.
- Double-click, `Enter` or `F4` jumps to the test's source (**Jump to Source**).
- **Show Passed** and **Show Ignored** filter the tree. Passed tests are hidden by default; the filters are remembered.
- Right-click a test or a selection for **Run '…'**, **Debug '…'** and **Jump to Source**.
- For an assertion failure with expected and actual values, **Show Diff** opens them side by side.
Detected test configurations show results in the tree automatically. For your own configuration, turn on **Modify options › Show results in the test runner**.
## Rerun tests
| Action | macOS | Windows / Linux |
| ---------------------------------- | ----- | --------------- |
| **Rerun** (in the Run tool window) | `⌘R` | `Ctrl+F5` |
| **Rerun Failed Tests** | — | — |
**Rerun Failed Tests** (in the Run tool window toolbar and Find Action) runs only the tests that failed in the last run, using each tool's filter syntax. It works for Cargo, Jest / Vitest, pytest, Django, PHPUnit, Go, Maven / Gradle and .NET runs, and for plugin test frameworks.
## Navigate between code and tests
**Navigate › Test** (`⌘⇧T` / `Ctrl+Shift+T`) jumps from a class to its tests and back, using common naming conventions (`FooTest`, `test_foo.py`, `foo.test.ts`…) and the project's source and test roots. With several matches it shows a chooser. With none, **Create New Test…** creates one from the file templates.
## Coverage
To see which lines the tests execute, run them with coverage. See [Coverage](/en/guide/coverage).