IntelliJ Platform Plugin SDK Help

Testing Highlighting

When writing plugin tests, a common task is testing various kinds of highlighting (inspections, annotators, parser error highlighting, etc.). The IntelliJ Platform provides a dedicated utility and markup format for this task.

To test the highlighting for the file currently loaded into the in-memory editor, you invoke the checkHighlighting() method. The parameters to the method specify which severities should be taken into account when comparing the results with the expected results: errors are always taken into account, whereas warnings, weak warnings, and infos are optional. Alternatively, you can use the testHighlighting() method, which loads a testdata file into the in-memory editor and highlights it as a single operation.

If you need to test inspections (rather than generic highlighting provided by a highlighting lexer or annotator), you need to enable inspections that you're testing. This is done by calling CodeInsightTestFixture.enableInspections() in the setup method of your test or directly in a test method, before the call to checkHighlighting().

The expected results of the highlighting are specified directly in the source file. The platform supports an extensive XML-like markup language for this. In its simplest form, the markup looks like this:

<warning descr="expected error message">code to be highlighted</warning>

Or, as a more specific example:

public int <warning descr="The compareTo() method does not reference 'foo' which is referenced from equals(); inconsistency may result">compareTo</warning>(Simple other) { return 0; }

The tag name specifies the severity of the expected highlighting. The following severities are supported:

  • <error>
  • <warning>
  • <weak_warning>
  • <info>
  • <inject> (for an injected fragment)

  • <symbolName> (for a marker that highlights an identifier according to its type)

  • any custom severity can be referenced by its name

The tag can also have the following optional attributes:

  • descr expected message associated with the highlighter (if not specified, any text will match; if the message contains a quotation mark, it can be escaped by putting two backslash characters before it)

  • foregroundColor, backgroundColor, effectColor expected colors for the highlighting

  • effectType expected effect type for the highlighting (see EffectType)

  • fontType expected font style for the highlighting (0 - normal, 1 - bold, 2 - italic, 3 - bold italic)

Last modified: 15 March 2021