breandan d5952b46f7 Clean up inconsistent markdown code style
Search: ```([^`\n]+)```
Replace: `$1`
2015-08-18 15:21:34 -04:00

57 lines
2.5 KiB
Markdown

---
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)