I do not want to stick to the latest version 1.8.
We have to stick to version 1.3 as it is right now.
We do not have a critical issue which could not be solved by reflection.
This reflection call, I proposed in GH, is made only once, no performance
penalty.

T

On Sat, Sep 11, 2021 at 7:52 AM Marc Philipp <m...@gradle.com> wrote:

> Hi Emond and Tibor,
>
> I’m glad you discovered the new LauncherSession API which was added for
> this purpose. The JUnit 5.8 GA release will come in the next few days.
>
> As you mentrioned, the official documentation does not (yet!) do a good
> job of explaining its intended use case:
>
> https://junit.org/junit5/docs/5.8.0-RC1/user-guide/#launcher-api-launcher-session-listeners-custom
>
> Here’s a more complete example that I wrote for Gradle’s test distribution
> plugin:
>
> https://docs.gradle.com/enterprise/test-distribution-gradle-plugin/#junit_5_8_and_later
>
> It demonstrates how to initialize a “fixture” only once for an entire
> session and only if tests are actually going to be executed not just
> discovered. I’ll make sure to update the official JUnit docs to include a
> similar example before the release.
>
> To only differentiate between the different versions of JUnit in one place
> and stay backwards compatible, you could create an adapter class like this:
>
> public class BackwardsCompatibleLauncherSession implements AutoCloseable {
>
>     public static BackwardsCompatibleLauncherSession open() {
>         try {
>             LauncherSession launcherSession =
> LauncherFactory.openSession();
>             return new
> BackwardsCompatibleLauncherSession(launcherSession.getLauncher(),
> launcherSession::close);
>         } catch (NoSuchMethodError ignore) {
>             // JUnit Platform version on test classpath does not yet
> support launcher sessions
>             return new
> BackwardsCompatibleLauncherSession(LauncherFactory.create(), () -> {});
>         }
>     }
>
>     private final Launcher launcher;
>     private final Runnable onClose;
>
>     private BackwardsCompatibleLauncherSession(Launcher launcher, Runnable
> onClose) {
>         this.launcher = launcher;
>         this.onClose = onClose;
>     }
>
>     Launcher getLauncher() {
>         return launcher;
>     }
>
>     @Override
>     public void close() {
>         onClose.run();
>     }
> }
>
> Cheers,
>
> Marc
>

Reply via email to