mirror of
https://github.com/JetBrains/intellij-sdk-code-samples.git
synced 2025-07-29 17:57:53 +08:00
57 lines
2.6 KiB
Markdown
57 lines
2.6 KiB
Markdown
---
|
|
layout: editable
|
|
title: 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:
|
|
|
|
```xml
|
|
<warning descr="expected error message">code to be highlighted</warning>
|
|
```
|
|
|
|
Or, as a more specific example:
|
|
|
|
```xml
|
|
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``` enum for possible values)
|
|
|
|
* ```fontType``` expected font style for the highlighting (0 - normal, 1 - bold, 2 - italic, 3 - bold italic) |