= Discovery Issues

Test engines may encounter issues during test discovery. For example, the declaration of a
test class or method may be invalid. To avoid such issues from going unnoticed, the JUnit
Platform provides a xref:advanced-topics/engines.adoc#discovery-issues[mechanism for test engines] to
report them with different severity levels:

INFO::
Indicates that the engine encountered something that could be potentially problematic, but
could also happen due to a valid setup or configuration.

WARNING::
Indicates that the engine encountered something that is problematic and might lead to
unexpected behavior or will be removed or changed in a future release.

ERROR::
Indicates that the engine encountered something that is definitely problematic and will
lead to unexpected behavior.

If an engine reports an issue with a severity equal to or higher than a configurable
_critical_ severity, its tests will not be executed. Instead, the engine will be reported
as failed during execution with a `{DiscoveryIssueException}` listing all critical issues.
Non-critical issues will be logged but will not prevent the engine from executing its
tests. The `junit.platform.discovery.issue.severity.critical`
xref:running-tests/configuration-parameters.adoc[configuration parameter] can be used to set the critical
severity level. Currently, the default value is `ERROR` but it may be changed in a future
release.

TIP: To surface all discovery issues in your project, it is recommended to set the
`junit.platform.discovery.issue.severity.critical` configuration parameter to `INFO`.

In addition, registered `{LauncherDiscoveryListener}` implementations can receive
discovery issues via the `issueEncountered()` method. This allows IDEs and build tools to
report issues to the user in a more user-friendly way. For example, IDEs may choose to
display all issues in a list or table.
