Re: issue with junit 5 integration

classic Classic list List threaded Threaded
5 messages Options
Reply | Threaded
Open this post in threaded view
|

Re: issue with junit 5 integration

Christian Stein
No, it works with Surefire 2.22.0 and JUnit 5.3.

Just add (or move) the test-runtime dependencies to the Surefire plugin
element:

<build>
   <plugins>
      <!-- JUnit 5 requires Surefire version 2.22.0 or higher -->
      <plugin>
         <artifactId>maven-surefire-plugin</artifactId>
         <version>2.22.0</version>
         <dependencies>
                   <dependency>
                       <groupId>org.junit.jupiter</groupId>
                       <artifactId>junit-jupiter-engine</artifactId>
                       <version>5.3.0</version>
                   </dependency>
         </dependencies>
      </plugin>
   </plugins>
</build>


Just checking our sample builds over at JUnit 5. Which do _NOT_ do this at
the moment.



On Tue, Sep 4, 2018 at 11:32 PM Olivier Lamy <[hidden email]> wrote:

> Hi
> very embarrassing issue which probably worth a quick release!
> Can you create a jira?
> As junit 5.3.0 has just been released,  I might be happy to cut 2.22.1 very
> quickly with only this fix.
> others wdyt?
>
>
> On Wed, 5 Sep 2018 at 06:46, Romain Manni-Bucau <[hidden email]>
> wrote:
>
> > Hi guys,
> >
> > Jira seems down so sending a mail.
> >
> > I wanted to upgrade Meecrowave to JUnit 5.3 since it is out but I
> realized
> > the way surefire provider was developped for JUnit 5 was forcing the
> > junit-platform-engine even adding it manually in the test dependencies or
> > plugin dependencies.
> >
> > Side note: I didn't investigated other providers but I guess it is the
> > exact same but the API breakage are happening less often.
> >
> > I therefore created a PR to fix that ->
> > https://github.com/apache/maven-surefire/pull/193
> >
> > Note: I didn't upgrade the JUnit 5 version in the same release but it
> > should probably be done too in another commit/PR.
> >
> > I wonder if you have release plans which could include this. In terms of
> > issues I have in mind the other thing about JUnit 5 which would be great
> to
> > add is the support for display names instead of using the class+test
> names
> > in the logs and reports but this is less mandatory than previous one
> which
> > fails with a NoSuchMethod error when using vintage engine.
> >
> > Romain Manni-Bucau
> > @rmannibucau <https://twitter.com/rmannibucau> |  Blog
> > <https://rmannibucau.metawerx.net/> | Old Blog
> > <http://rmannibucau.wordpress.com> | Github <
> > https://github.com/rmannibucau> |
> > LinkedIn <https://www.linkedin.com/in/rmannibucau> | Book
> > <
> >
> https://www.packtpub.com/application-development/java-ee-8-high-performance
> > >
> >
>
>
> --
> Olivier Lamy
> http://twitter.com/olamy | http://linkedin.com/in/olamy
>
Reply | Threaded
Open this post in threaded view
|

Re: issue with junit 5 integration

Romain Manni-Bucau
It does _NOT_ work and as mentionned you can test on meecrowave trying to
upgrade the version in junit module.

The test classpath build ignores project and plugin dependencies. It faked
working until 5.3.0-RC1 cause no breakage was visible.

When testing, dont forget to use jupiter, vintage engines + platform stack,
otherwise code is compatible with 1.2 which gets loaded. The doc ignores
the platform and vintage engine and guess it was not tested at all checking
the code ;). Not a big deal since it is a "first" release but we should be
ablz to get it fixed quickly.


Le mar. 4 sept. 2018 23:51, Olivier Lamy <[hidden email]> a écrit :

> Ok perso I don't mind (it just need to be documented)
> But the issue is: users are used to simply upgrade their junit dependency.
>
>
> On Wed, 5 Sep 2018 at 07:37, Christian Stein <[hidden email]> wrote:
>
> > No, it works with Surefire 2.22.0 and JUnit 5.3.
> >
> > Just add (or move) the test-runtime dependencies to the Surefire plugin
> > element:
> >
> > <build>
> >    <plugins>
> >       <!-- JUnit 5 requires Surefire version 2.22.0 or higher -->
> >       <plugin>
> >          <artifactId>maven-surefire-plugin</artifactId>
> >          <version>2.22.0</version>
> >          <dependencies>
> >                    <dependency>
> >                        <groupId>org.junit.jupiter</groupId>
> >                        <artifactId>junit-jupiter-engine</artifactId>
> >                        <version>5.3.0</version>
> >                    </dependency>
> >          </dependencies>
> >       </plugin>
> >    </plugins>
> > </build>
> >
> >
> > Just checking our sample builds over at JUnit 5. Which do _NOT_ do this
> at
> > the moment.
> >
> >
> >
> > On Tue, Sep 4, 2018 at 11:32 PM Olivier Lamy <[hidden email]> wrote:
> >
> > > Hi
> > > very embarrassing issue which probably worth a quick release!
> > > Can you create a jira?
> > > As junit 5.3.0 has just been released,  I might be happy to cut 2.22.1
> > very
> > > quickly with only this fix.
> > > others wdyt?
> > >
> > >
> > > On Wed, 5 Sep 2018 at 06:46, Romain Manni-Bucau <[hidden email]
> >
> > > wrote:
> > >
> > > > Hi guys,
> > > >
> > > > Jira seems down so sending a mail.
> > > >
> > > > I wanted to upgrade Meecrowave to JUnit 5.3 since it is out but I
> > > realized
> > > > the way surefire provider was developped for JUnit 5 was forcing the
> > > > junit-platform-engine even adding it manually in the test
> dependencies
> > or
> > > > plugin dependencies.
> > > >
> > > > Side note: I didn't investigated other providers but I guess it is
> the
> > > > exact same but the API breakage are happening less often.
> > > >
> > > > I therefore created a PR to fix that ->
> > > > https://github.com/apache/maven-surefire/pull/193
> > > >
> > > > Note: I didn't upgrade the JUnit 5 version in the same release but it
> > > > should probably be done too in another commit/PR.
> > > >
> > > > I wonder if you have release plans which could include this. In terms
> > of
> > > > issues I have in mind the other thing about JUnit 5 which would be
> > great
> > > to
> > > > add is the support for display names instead of using the class+test
> > > names
> > > > in the logs and reports but this is less mandatory than previous one
> > > which
> > > > fails with a NoSuchMethod error when using vintage engine.
> > > >
> > > > Romain Manni-Bucau
> > > > @rmannibucau <https://twitter.com/rmannibucau> |  Blog
> > > > <https://rmannibucau.metawerx.net/> | Old Blog
> > > > <http://rmannibucau.wordpress.com> | Github <
> > > > https://github.com/rmannibucau> |
> > > > LinkedIn <https://www.linkedin.com/in/rmannibucau> | Book
> > > > <
> > > >
> > >
> >
> https://www.packtpub.com/application-development/java-ee-8-high-performance
> > > > >
> > > >
> > >
> > >
> > > --
> > > Olivier Lamy
> > > http://twitter.com/olamy | http://linkedin.com/in/olamy
> > >
> >
>
>
> --
> Olivier Lamy
> http://twitter.com/olamy | http://linkedin.com/in/olamy
>
Reply | Threaded
Open this post in threaded view
|

Re: issue with junit 5 integration

Christian Stein
In reply to this post by Christian Stein
On Wed, Sep 5, 2018 at 10:07 AM Stephane Nicoll <[hidden email]>
wrote:

> How do I reproduce this problem concretely? Having to specify a dependency
> in surefire is not an option for us as we want the JUnit5 provider to be
> detected automatically.
>
> I've upgraded a Spring Boot project to use 5.3.0 and I don't see any
> problem.
>
>
That's my point: I'm not saying the current implementation is perfect and
that
can't be improved, but there are successful migrated projects that work with
Surefire 2.22.0 and JUnit 5.3 "flawlessly".

Romain is pointing to "meecrowave":
https://twitter.com/rmannibucau/status/1037238234915528704

Looking into the "pom.xml" there right now.
Reply | Threaded
Open this post in threaded view
|

Re: issue with junit 5 integration

Stephane Nicoll
In reply to this post by Christian Stein
I am more interested to understand what is particular in that project that
exhibits an issue we don't seem to be facing. That thread is phrased in
such a way that it is a general problem and I'd like a confirmation of that
as it may impact Spring Boot (amongst other things)

Thanks,
S.


On Wed, Sep 5, 2018 at 10:13 AM Romain Manni-Bucau <[hidden email]>
wrote:

> @Stephane: you can clone https://github.com/apache/meecrowave/tree/trunk
> and change the version in the junit pom (
> https://github.com/apache/meecrowave/blob/trunk/meecrowave-junit/pom.xml),
> it will fail then
>
> Romain Manni-Bucau
> @rmannibucau <https://twitter.com/rmannibucau> |  Blog
> <https://rmannibucau.metawerx.net/> | Old Blog
> <http://rmannibucau.wordpress.com> | Github <
> https://github.com/rmannibucau> |
> LinkedIn <https://www.linkedin.com/in/rmannibucau> | Book
> <
> https://www.packtpub.com/application-development/java-ee-8-high-performance
> >
>
>
> Le mer. 5 sept. 2018 à 10:07, Stephane Nicoll <[hidden email]>
> a
> écrit :
>
> > How do I reproduce this problem concretely? Having to specify a
> dependency
> > in surefire is not an option for us as we want the JUnit5 provider to be
> > detected automatically.
> >
> > I've upgraded a Spring Boot project to use 5.3.0 and I don't see any
> > problem.
> >
> > Thanks,
> > S.
> >
> >
> > On Tue, Sep 4, 2018 at 10:46 PM Romain Manni-Bucau <
> [hidden email]>
> > wrote:
> >
> > > Hi guys,
> > >
> > > Jira seems down so sending a mail.
> > >
> > > I wanted to upgrade Meecrowave to JUnit 5.3 since it is out but I
> > realized
> > > the way surefire provider was developped for JUnit 5 was forcing the
> > > junit-platform-engine even adding it manually in the test dependencies
> or
> > > plugin dependencies.
> > >
> > > Side note: I didn't investigated other providers but I guess it is the
> > > exact same but the API breakage are happening less often.
> > >
> > > I therefore created a PR to fix that ->
> > > https://github.com/apache/maven-surefire/pull/193
> > >
> > > Note: I didn't upgrade the JUnit 5 version in the same release but it
> > > should probably be done too in another commit/PR.
> > >
> > > I wonder if you have release plans which could include this. In terms
> of
> > > issues I have in mind the other thing about JUnit 5 which would be
> great
> > to
> > > add is the support for display names instead of using the class+test
> > names
> > > in the logs and reports but this is less mandatory than previous one
> > which
> > > fails with a NoSuchMethod error when using vintage engine.
> > >
> > > Romain Manni-Bucau
> > > @rmannibucau <https://twitter.com/rmannibucau> |  Blog
> > > <https://rmannibucau.metawerx.net/> | Old Blog
> > > <http://rmannibucau.wordpress.com> | Github <
> > > https://github.com/rmannibucau> |
> > > LinkedIn <https://www.linkedin.com/in/rmannibucau> | Book
> > > <
> > >
> >
> https://www.packtpub.com/application-development/java-ee-8-high-performance
> > > >
> > >
> >
>
Reply | Threaded
Open this post in threaded view
|

Re: issue with junit 5 integration

Christian Stein
So. Initial results are in.

Setting only: <junit5.minor.version>3.0</junit5.minor.version>

...leads to the exception Romain reported. Version 1.2.0 of the Platform is
resolved.

Sorting out the test compile- and runtime dependencies fixes the issue:
See  https://github.com/apache/meecrowave/pull/11 for details.

Now, making Surefire better:

1. Document this setup, split API and platform/engine dependencies.
2. Make Surefire smarter to resolve the correct runtime deps when only API
deps are present.


On Wed, Sep 5, 2018 at 10:33 AM Romain Manni-Bucau <[hidden email]>
wrote:

> +1
>
> Tibor got a good point noticing that we use scope provided for some junit
> artifacts which can impact the way the classpath is built.
>
>