mirror of
https://github.com/l0ng-ai/openidea.git
synced 2026-11-14 16:07:52 +00:00
Selecting a test in the Run tool window's test tree shows only that test's output, and a class shows its own output followed by its tests'. - Maven: Surefire's console names failures but not what passed tests printed. The JUnit XML reports carry each test case's <system-out>/<system-err>; they are now read into a separate `stdout` field and shown for every test, before the failure details. Failures already reported on the console get the printed lines in front of their stack trace. - Gradle: output of a class's own setup and teardown (@BeforeAll, @AfterAll) arrived under the class descriptor and showed up as an extra child named after the class. The init script now sends it without a test name and it belongs to the class node.
78 lines
5.6 KiB
Plaintext
78 lines
5.6 KiB
Plaintext
---
|
||
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
|
||
|
||
<Steps>
|
||
<Step title="From the gutter">
|
||
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.
|
||
</Step>
|
||
<Step title="From the caret">
|
||
**Run › Run Context Configuration** (`⌃⇧R` / `Ctrl+Shift+F10`) runs the test at the caret, or all tests in the
|
||
current file.
|
||
</Step>
|
||
<Step title="A whole directory">
|
||
Right-click a test directory in the Project view and choose **Run '…'** to run the tests inside it.
|
||
</Step>
|
||
<Step title="Everything">
|
||
Run a detected test configuration such as `cargo test`, `go test ./...`, `pytest` or the `test` script of
|
||
`package.json` from the run widget.
|
||
</Step>
|
||
</Steps>
|
||
|
||
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.
|
||
|
||
<Note>
|
||
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).
|
||
</Note>
|
||
|
||
## 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).
|