mirror of
https://github.com/keycloak/keycloak.git
synced 2026-04-09 11:09:22 -04:00
33 lines
1.4 KiB
Markdown
33 lines
1.4 KiB
Markdown
# Debugging
|
|
|
|
When debugging Keycloak or extensions the embedded server mode is very useful as it allows debugging tests, Keycloak,
|
|
as well as extensions from the IDE without attaching remote debuggers.
|
|
|
|
To configure the embedded server mode the simplest approach is to add `.env.test` to the root of the project with the
|
|
following contents:
|
|
|
|
```properties
|
|
KC_TEST_SERVER=embedded
|
|
KC_TEST_DATABASE=dev-file
|
|
KC_TEST_DATABASE_REUSE=true
|
|
```
|
|
|
|
Using `dev-file` with re-use is optional, but helps to reduce the startup time.
|
|
|
|
## Debug helper
|
|
|
|
When debugging Keycloak or extension code there may be an issue that the relevant debug statement is invoked during
|
|
test framework setup, or during other tests. To help with this there is a utility called `DebugHelper`.
|
|
|
|
To use this when adding a breakpoint add a condition on `DebugHelper.isInTest()` this will result in the debugger
|
|
only stopping on the breakpoint if a test method is currently in progress.
|
|
|
|
For more advanced use-cases it is also possible to specify the test class and or method name the debugger should stop by
|
|
passing a string to `isInTest`. The syntax is `testClassName#testMethodName` where `testClassName` can be the simple-name
|
|
of the test class, or the fully qualified name:
|
|
|
|
* `DebugHelper.isInTest("org.package.MyTest")`
|
|
* `DebugHelper.isInTest("MyTest")`
|
|
* `DebugHelper.isInTest("#testMethod")`
|
|
* `DebugHelper.isInTest("MyTest#testMethod")`
|
|
* `DebugHelper.isInTest("org.package.MyTest#testMethod")`
|