2.6 KiB
layout | title |
---|---|
general | Testing Highlighting |
A common task when writing plugin tests 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 (seeEffectType
enum for possible values) -
fontType
expected font style for the highlighting (0 - normal, 1 - bold, 2 - italic, 3 - bold italic)