Interface LauncherInterceptor
Interceptor for test discovery and execution by a
Launcher in the
context of a LauncherSession.
Interceptors are instantiated once per LauncherSession and closed
after the session is closed. They can
intercept the following invocations:
-
creation of
LauncherSessionListenerinstances registered via theServiceLoadermechanism -
creation of
Launcherinstances -
calls to
Launcher.discover(LauncherDiscoveryRequest),Launcher.execute(TestPlan, TestExecutionListener...),Launcher.execute(LauncherDiscoveryRequest, TestExecutionListener...), andLauncher.execute(LauncherExecutionRequest),
Implementations of this interface can be registered via the
ServiceLoader mechanism by additionally
setting the "junit.platform.launcher.interceptors.enabled"
configuration parameter to true.
A typical use case is to create a custom ClassLoader in the
constructor of the implementing class, replace the
contextClassLoader of the
current thread while intercepting invocations,
and close the custom ClassLoader in close()
- Since:
- 1.10
- See Also:
-
Nested Class Summary
Nested ClassesModifier and TypeInterfaceDescriptionstatic interfaceLauncherInterceptor.Invocation<T extends @Nullable Object>An invocation that can be intercepted. -
Method Summary
Modifier and TypeMethodDescriptionvoidclose()Closes this interceptor.<T extends @Nullable Object>
Tintercept(LauncherInterceptor.Invocation<T> invocation) Intercept the supplied invocation.
-
Method Details
-
intercept
Intercept the supplied invocation.Implementations must call
LauncherInterceptor.Invocation.proceed()exactly once.- Parameters:
invocation- the intercepted invocation; nevernull- Returns:
- the result of the invocation
-
close
void close()Closes this interceptor.Any resources held by this interceptor should be released by this method.
-