A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://plugins.jetbrains.com/docs/intellij/light-and-heavy-tests.html below:

Light and Heavy Tests | IntelliJ Platform Plugin SDK

Light and Heavy Tests

Check out this step-by-step tutorial teaching how to write and run automated tests for your custom language plugin.

Also, code samples comparing_string_references_inspection and conditional_operator_intention demonstrate using tests.

All required test-framework dependencies must be declared explicitly.

Plugin tests run in a real, rather than mocked, IntelliJ Platform environment and use real implementations for most application and project services.

Loading and initializing all the project components and services for a project to run tests is a relatively expensive operation, and it is desired to avoid doing it for each test. Dependently on the loading and execution time, we make a difference between light tests and heavy tests available in the IntelliJ Platform test framework:

Light and heavy tests use different base classes or fixture classes, as described below.

Because of the performance difference, we recommend plugin developers to write light tests whenever possible.

Light Tests

The standard way of writing a light test is to extend one of the following classes:

LightProjectDescriptor

When writing a light test, it is possible to specify the requirements of the project used in test, such as the module type, the configured SDK, facets, libraries, etc. It is done by extending the LightProjectDescriptor class and returning the project descriptor (usually stored in static final field) from getProjectDescriptor().

Before executing each test, the project instance will be reused if the test case returns the same project descriptor as the previous one or recreated if the descriptor is different (equals() = false).

When testing JVM languages, see also DefaultLightProjectDescriptor.

Heavy Tests

The standard way of writing a heavy test is to extend HeavyPlatformTestCase.

Examples:

Setting Up a Multi-Module Project

If a test requires a multi-module project, using a heavy test is required. The following code snippet presents a multi-module Java project setup:

TestFixtureBuilder<IdeaProjectTestFixture> projectBuilder = IdeaTestFixtureFactory.getFixtureFactory().createFixtureBuilder(getName()); // fixture must be created before adding modules: myFixture = JavaTestFixtureFactory.getFixtureFactory() .createCodeInsightFixture(projectBuilder.getFixture()); // add and configure modules: JavaModuleFixtureBuilder<?> builder1 = projectBuilder.addModule(JavaModuleFixtureBuilder.class); // optionally, configure the module, e.g.: // builder1.setLanguageLevel(...); // builder1.addJdk(...); JavaModuleFixtureBuilder<?> builder2 = projectBuilder.addModule(JavaModuleFixtureBuilder.class); // configure another module...

12 May 2025


RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4