Re: How to properly override junit-platform and junit-jupiter in a parent pom

2022-06-17 Thread Karl Heinz Marbaise

Hi,

On 17.06.22 02:27, David Karr wrote:

Sorry, can you clarify exactly what you mean by that?



Usually you have something in your pom file to use the spring boot
dependencies:





org.springframework.boot
spring-boot-dependencies
2.3.12.RELEASE
import
pom





That means by default you will use the junit-jupiter version which is
defined by the spring-boot-dependencies.

If you like to overwrite that you have to define the junit-bom before
the spring boot dependencies like this:




org.junit
junit-bom
5.8.2
import
pom


org.springframework.boot
spring-boot-dependencies
2.3.12.RELEASE
import
pom






After using this in your parent pom all of the junit jupiter
dependencies have to be in version 5.8.2

Furthermore if you check the dependency tree via

mvn dependency:tree

you should check which version of the maven-dependency-plugin you are
using? (Most recent one?)...

PS.: The version of spring boot which is used is already out of support
(https://spring.io/projects/spring-boot#support).

Kind regards
Karl Heinz Marbaise



On Thu, Jun 16, 2022 at 4:14 PM Karl Heinz Marbaise 
wrote:


Hi,

It's important to define the junit-bom import before the
spring-boot-dependencies import part in dependencyManagement which assumes
you don't use spring-boot-parent?

Kind regards
Karl Heinz Marbaise


On 16.06.22 23:54, David Karr wrote:

We have a bunch of services running Spring Boot 2.3.12, which by default
uses junit-platform 1.6.3 and junit-jupiter 5.6.3.

We are trying to instead use junit-platform 1.8.2 and junit-jupiter

5.8.2.

All the artifacts and versions we need are in junit-bom-5.8.2.

We want to control this in our parent pom(s), as we have dozens of

similar

services all using the same parent pom.

I thought I had this working, but now it appears it's not, and I'm not

sure

what I'm missing.

At one time I had thought all I had to do was include junit-bom v5.8.2 in
the "dependencies" list in the parent pom, but that never worked.  For

lack

of any other solution, I simply pasted the contents of the "dependencies"
list from junit-bom-5.8.2 into the "dependencies" list of my parent pom.
At one point, I thought this was working.

Today, I'm looking at one service that uses that parent pom, but for some
reason it's not getting the newer versions of the artifacts, it's still
getting 1.6.3 and 5.6.3.  I'm looking at both "mvn dependency:tree" and

the

"Dependency Hierarchy" view in Eclipse.  I'm not completely certain how

to

interpret what I'm seeing.

The first thing I want to know is what is the best way to do this sort of
thing.  I find it hard to believe pasting the entire contents of the bom
that I want into the parent pom was the right way to do it, but I

couldn't

get it to work any other way, and now it's not working anyway.

I can provide more details of specific poms and parent poms, but I wanted
to see if there was a simple solution first.

I am basically aware of the difference between "dependencyManagement" and
"dependencies" in a parent pom.








-
To unsubscribe, e-mail: users-unsubscr...@maven.apache.org
For additional commands, e-mail: users-h...@maven.apache.org



Surefire not running JUnit 5 tests after fixing how junit-bom artifacts are specified

2022-06-17 Thread David Karr
I'm posting a new note, as this might be a different issue.

I recently got good advice on this list about how to properly specify the
version overrides for the junit-bom artifacts.  When I implemented that, I
saw that I was consistently getting the correct versions for those
artifacts.

However, I'm now confused by the behavior that I'm seeing from Surefire.  I
currently have a mix of JUnit 4 and JUnit 5 tests.  I'm pretty sure that I
had this working before, but now I see that it is not running any of the
JUnit 5 tests.

Note the following excerpt from my build:
---
[INFO] --- maven-surefire-plugin:3.0.0-M7:test (default-test) @
PlatformPilotMs ---
[INFO] Using auto detected provider
org.apache.maven.surefire.junit4.JUnit4Provider
--

I'm using the very latest M version, as that resolves other issues we've
been having. When I look to see what tests were executed, I see that it
doesn't include any of my JUnit 5 tests.

I ran "mvn dependency:tree" to verify what versions of JUnit are in the
classpath, and it has BOTH JUnit 4.13 and junit-platform 1.8.2 and
junit-jupiter 5.8.2.  The surefire doc page says "Surefire normally
automatically selects which test-framework provider to use based on the
version of TestNG/JUnit present in your project's classpath". Is the fact
that both are in the classpath causing this? Am I going to have to manually
specify both the junit 4 and junit 5 providers in the surefire
dependencies? That is additionally annoying as I also have to redundantly
specify the versions of those artifacts (I tried not specifying a version,
and it complained).


Re: Surefire not running JUnit 5 tests after fixing how junit-bom artifacts are specified

2022-06-17 Thread Slawomir Jaranowski
Do you have on your classpath - junit-platform-runner?
Please remove it.


pt., 17 cze 2022 o 20:23 David Karr  napisał(a):

> I'm posting a new note, as this might be a different issue.
>
> I recently got good advice on this list about how to properly specify the
> version overrides for the junit-bom artifacts.  When I implemented that, I
> saw that I was consistently getting the correct versions for those
> artifacts.
>
> However, I'm now confused by the behavior that I'm seeing from Surefire.  I
> currently have a mix of JUnit 4 and JUnit 5 tests.  I'm pretty sure that I
> had this working before, but now I see that it is not running any of the
> JUnit 5 tests.
>
> Note the following excerpt from my build:
> ---
> [INFO] --- maven-surefire-plugin:3.0.0-M7:test (default-test) @
> PlatformPilotMs ---
> [INFO] Using auto detected provider
> org.apache.maven.surefire.junit4.JUnit4Provider
> --
>
> I'm using the very latest M version, as that resolves other issues we've
> been having. When I look to see what tests were executed, I see that it
> doesn't include any of my JUnit 5 tests.
>
> I ran "mvn dependency:tree" to verify what versions of JUnit are in the
> classpath, and it has BOTH JUnit 4.13 and junit-platform 1.8.2 and
> junit-jupiter 5.8.2.  The surefire doc page says "Surefire normally
> automatically selects which test-framework provider to use based on the
> version of TestNG/JUnit present in your project's classpath". Is the fact
> that both are in the classpath causing this? Am I going to have to manually
> specify both the junit 4 and junit 5 providers in the surefire
> dependencies? That is additionally annoying as I also have to redundantly
> specify the versions of those artifacts (I tried not specifying a version,
> and it complained).
>


-- 
Sławomir Jaranowski


Re: Surefire not running JUnit 5 tests after fixing how junit-bom artifacts are specified

2022-06-17 Thread David Karr
Ok, what is the proper way to do that, considering I have the following in
a bom imported by my parent pom:


org.junit
junit-bom
import
pom
5.8.2



  org.springframework.boot
  spring-boot-dependencies
  ${spring-boot.version}
  pom
  import


Do I add an exclusion to one or both of these?

On Fri, Jun 17, 2022 at 11:37 AM Slawomir Jaranowski 
wrote:

> Do you have on your classpath - junit-platform-runner?
> Please remove it.
>
>
> pt., 17 cze 2022 o 20:23 David Karr 
> napisał(a):
>
> > I'm posting a new note, as this might be a different issue.
> >
> > I recently got good advice on this list about how to properly specify the
> > version overrides for the junit-bom artifacts.  When I implemented that,
> I
> > saw that I was consistently getting the correct versions for those
> > artifacts.
> >
> > However, I'm now confused by the behavior that I'm seeing from
> Surefire.  I
> > currently have a mix of JUnit 4 and JUnit 5 tests.  I'm pretty sure that
> I
> > had this working before, but now I see that it is not running any of the
> > JUnit 5 tests.
> >
> > Note the following excerpt from my build:
> > ---
> > [INFO] --- maven-surefire-plugin:3.0.0-M7:test (default-test) @
> > PlatformPilotMs ---
> > [INFO] Using auto detected provider
> > org.apache.maven.surefire.junit4.JUnit4Provider
> > --
> >
> > I'm using the very latest M version, as that resolves other issues we've
> > been having. When I look to see what tests were executed, I see that it
> > doesn't include any of my JUnit 5 tests.
> >
> > I ran "mvn dependency:tree" to verify what versions of JUnit are in the
> > classpath, and it has BOTH JUnit 4.13 and junit-platform 1.8.2 and
> > junit-jupiter 5.8.2.  The surefire doc page says "Surefire normally
> > automatically selects which test-framework provider to use based on the
> > version of TestNG/JUnit present in your project's classpath". Is the fact
> > that both are in the classpath causing this? Am I going to have to
> manually
> > specify both the junit 4 and junit 5 providers in the surefire
> > dependencies? That is additionally annoying as I also have to redundantly
> > specify the versions of those artifacts (I tried not specifying a
> version,
> > and it complained).
> >
>
>
> --
> Sławomir Jaranowski
>


Re: Surefire not running JUnit 5 tests after fixing how junit-bom artifacts are specified

2022-06-17 Thread Slawomir Jaranowski
Import scope only sets versions of dependency - not add it to dependency.

Please examine output of dependency:tree and look where is added
junit-platform-runner

pt., 17 cze 2022 o 20:47 David Karr  napisał(a):

> Ok, what is the proper way to do that, considering I have the following in
> a bom imported by my parent pom:
> 
> 
> org.junit
> junit-bom
> import
> pom
> 5.8.2
> 
> 
> 
>   org.springframework.boot
>   spring-boot-dependencies
>   ${spring-boot.version}
>   pom
>   import
> 
> 
> Do I add an exclusion to one or both of these?
>
> On Fri, Jun 17, 2022 at 11:37 AM Slawomir Jaranowski <
> s.jaranow...@gmail.com>
> wrote:
>
> > Do you have on your classpath - junit-platform-runner?
> > Please remove it.
> >
> >
> > pt., 17 cze 2022 o 20:23 David Karr 
> > napisał(a):
> >
> > > I'm posting a new note, as this might be a different issue.
> > >
> > > I recently got good advice on this list about how to properly specify
> the
> > > version overrides for the junit-bom artifacts.  When I implemented
> that,
> > I
> > > saw that I was consistently getting the correct versions for those
> > > artifacts.
> > >
> > > However, I'm now confused by the behavior that I'm seeing from
> > Surefire.  I
> > > currently have a mix of JUnit 4 and JUnit 5 tests.  I'm pretty sure
> that
> > I
> > > had this working before, but now I see that it is not running any of
> the
> > > JUnit 5 tests.
> > >
> > > Note the following excerpt from my build:
> > > ---
> > > [INFO] --- maven-surefire-plugin:3.0.0-M7:test (default-test) @
> > > PlatformPilotMs ---
> > > [INFO] Using auto detected provider
> > > org.apache.maven.surefire.junit4.JUnit4Provider
> > > --
> > >
> > > I'm using the very latest M version, as that resolves other issues
> we've
> > > been having. When I look to see what tests were executed, I see that it
> > > doesn't include any of my JUnit 5 tests.
> > >
> > > I ran "mvn dependency:tree" to verify what versions of JUnit are in the
> > > classpath, and it has BOTH JUnit 4.13 and junit-platform 1.8.2 and
> > > junit-jupiter 5.8.2.  The surefire doc page says "Surefire normally
> > > automatically selects which test-framework provider to use based on the
> > > version of TestNG/JUnit present in your project's classpath". Is the
> fact
> > > that both are in the classpath causing this? Am I going to have to
> > manually
> > > specify both the junit 4 and junit 5 providers in the surefire
> > > dependencies? That is additionally annoying as I also have to
> redundantly
> > > specify the versions of those artifacts (I tried not specifying a
> > version,
> > > and it complained).
> > >
> >
> >
> > --
> > Sławomir Jaranowski
> >
>


-- 
Sławomir Jaranowski


Re: Surefire not running JUnit 5 tests after fixing how junit-bom artifacts are specified

2022-06-17 Thread David Karr
Ok, so the tree has output like this:
--
[INFO] +- com.att.idp:idp-seed-sdk-core:jar:2.7.0-SNAPSHOT:compile
[INFO] |  +- org.junit.jupiter:junit-jupiter-api:jar:5.8.2:compile
[INFO] |  |  +- org.opentest4j:opentest4j:jar:1.2.0:compile
[INFO] |  |  \- org.apiguardian:apiguardian-api:jar:1.1.2:compile
[INFO] |  +- org.junit.jupiter:junit-jupiter-engine:jar:5.8.2:compile
[INFO] |  +-
org.junit.jupiter:junit-jupiter-migrationsupport:jar:5.8.2:compile
[INFO] |  +- org.junit.jupiter:junit-jupiter-params:jar:5.8.2:compile
[INFO] |  +- org.junit.platform:junit-platform-commons:jar:1.8.2:compile
[INFO] |  +- org.junit.platform:junit-platform-console:jar:1.8.2:compile
[INFO] |  +- org.junit.platform:junit-platform-engine:jar:1.8.2:compile
[INFO] |  +- org.junit.platform:junit-platform-jfr:jar:1.8.2:compile
[INFO] |  +- org.junit.platform:junit-platform-launcher:jar:1.8.2:compile
[INFO] |  +- org.junit.platform:junit-platform-reporting:jar:1.8.2:compile
[INFO] |  +- org.junit.platform:junit-platform-runner:jar:1.8.2:compile
[INFO] |  +- org.junit.platform:junit-platform-suite:jar:1.8.2:compile
[INFO] |  +- org.junit.platform:junit-platform-suite-api:jar:1.8.2:compile
[INFO] |  +-
org.junit.platform:junit-platform-suite-commons:jar:1.8.2:compile
[INFO] |  +-
org.junit.platform:junit-platform-suite-engine:jar:1.8.2:compile
[INFO] |  +- org.junit.platform:junit-platform-testkit:jar:1.8.2:compile
[INFO] |  \- org.junit.vintage:junit-vintage-engine:jar:5.8.2:compile
-
It's a little hard to see with a proportional font, but the top line there
is the artifact that references it.  In my parent pom, where this artifact
is specified, I did the following:
-

com.att.idp
idp-seed-sdk-core


org.junit.platform
junit-platform-runner





This made no difference.

The only thing that makes this do what it needs to do is adding the
"surefire-junit-platform" dependency to the surefire plugin, but I have to
do that in every service that uses that parent pom. This is the only change
that runs both the JUnit 4 and JUnit 5 tests.

On Fri, Jun 17, 2022 at 12:13 PM Slawomir Jaranowski 
wrote:

> Import scope only sets versions of dependency - not add it to dependency.
>
> Please examine output of dependency:tree and look where is added
> junit-platform-runner
>
> pt., 17 cze 2022 o 20:47 David Karr 
> napisał(a):
>
> > Ok, what is the proper way to do that, considering I have the following
> in
> > a bom imported by my parent pom:
> > 
> > 
> > org.junit
> > junit-bom
> > import
> > pom
> > 5.8.2
> > 
> > 
> > 
> >   org.springframework.boot
> >   spring-boot-dependencies
> >   ${spring-boot.version}
> >   pom
> >   import
> > 
> > 
> > Do I add an exclusion to one or both of these?
> >
> > On Fri, Jun 17, 2022 at 11:37 AM Slawomir Jaranowski <
> > s.jaranow...@gmail.com>
> > wrote:
> >
> > > Do you have on your classpath - junit-platform-runner?
> > > Please remove it.
> > >
> > >
> > > pt., 17 cze 2022 o 20:23 David Karr 
> > > napisał(a):
> > >
> > > > I'm posting a new note, as this might be a different issue.
> > > >
> > > > I recently got good advice on this list about how to properly specify
> > the
> > > > version overrides for the junit-bom artifacts.  When I implemented
> > that,
> > > I
> > > > saw that I was consistently getting the correct versions for those
> > > > artifacts.
> > > >
> > > > However, I'm now confused by the behavior that I'm seeing from
> > > Surefire.  I
> > > > currently have a mix of JUnit 4 and JUnit 5 tests.  I'm pretty sure
> > that
> > > I
> > > > had this working before, but now I see that it is not running any of
> > the
> > > > JUnit 5 tests.
> > > >
> > > > Note the following excerpt from my build:
> > > > ---
> > > > [INFO] --- maven-surefire-plugin:3.0.0-M7:test (default-test) @
> > > > PlatformPilotMs ---
> > > > [INFO] Using auto detected provider
> > > > org.apache.maven.surefire.junit4.JUnit4Provider
> > > > --
> > > >
> > > > I'm using the very latest M version, as that resolves other issues
> > we've
> > > > been having. When I look to see what tests were executed, I see that
> it
> > > > doesn't include any of my JUnit 5 tests.
> > > >
> > > > I ran "mvn dependency:tree" to verify what versions of JUnit are in
> the
> > > > classpath, and it has BOTH JUnit 4.13 and junit-platform 1.8.2 and
> > > > junit-jupiter 5.8.2.  The surefire doc page says "Surefire normally
> > > > automatically selects which test-framework provider to use based on
> the
> > > > version of TestNG/JUnit present in your project's classpath". Is the
> > fact
> > > > t

Re: Surefire not running JUnit 5 tests after fixing how junit-bom artifacts are specified

2022-06-17 Thread David Karr
Never mind, I think I figured this out.  I had two "parent" artifacts with
similar names, and I ran the build in the wrong one. It's still a bit
confusing where the exclusion has to go, but I now have a single exclusion
for junit-platform-runner, in the parent pom, so I don't have to do this in
each service pom.

On Fri, Jun 17, 2022 at 12:26 PM David Karr 
wrote:

> Ok, so the tree has output like this:
> --
> [INFO] +- com.att.idp:idp-seed-sdk-core:jar:2.7.0-SNAPSHOT:compile
> [INFO] |  +- org.junit.jupiter:junit-jupiter-api:jar:5.8.2:compile
> [INFO] |  |  +- org.opentest4j:opentest4j:jar:1.2.0:compile
> [INFO] |  |  \- org.apiguardian:apiguardian-api:jar:1.1.2:compile
> [INFO] |  +- org.junit.jupiter:junit-jupiter-engine:jar:5.8.2:compile
> [INFO] |  +-
> org.junit.jupiter:junit-jupiter-migrationsupport:jar:5.8.2:compile
> [INFO] |  +- org.junit.jupiter:junit-jupiter-params:jar:5.8.2:compile
> [INFO] |  +- org.junit.platform:junit-platform-commons:jar:1.8.2:compile
> [INFO] |  +- org.junit.platform:junit-platform-console:jar:1.8.2:compile
> [INFO] |  +- org.junit.platform:junit-platform-engine:jar:1.8.2:compile
> [INFO] |  +- org.junit.platform:junit-platform-jfr:jar:1.8.2:compile
> [INFO] |  +- org.junit.platform:junit-platform-launcher:jar:1.8.2:compile
> [INFO] |  +- org.junit.platform:junit-platform-reporting:jar:1.8.2:compile
> [INFO] |  +- org.junit.platform:junit-platform-runner:jar:1.8.2:compile
> [INFO] |  +- org.junit.platform:junit-platform-suite:jar:1.8.2:compile
> [INFO] |  +- org.junit.platform:junit-platform-suite-api:jar:1.8.2:compile
> [INFO] |  +-
> org.junit.platform:junit-platform-suite-commons:jar:1.8.2:compile
> [INFO] |  +-
> org.junit.platform:junit-platform-suite-engine:jar:1.8.2:compile
> [INFO] |  +- org.junit.platform:junit-platform-testkit:jar:1.8.2:compile
> [INFO] |  \- org.junit.vintage:junit-vintage-engine:jar:5.8.2:compile
> -
> It's a little hard to see with a proportional font, but the top line there
> is the artifact that references it.  In my parent pom, where this artifact
> is specified, I did the following:
> -
> 
> com.att.idp
> idp-seed-sdk-core
> 
> 
> org.junit.platform
> junit-platform-runner
> 
> 
> 
> 
>
> This made no difference.
>
> The only thing that makes this do what it needs to do is adding the
> "surefire-junit-platform" dependency to the surefire plugin, but I have to
> do that in every service that uses that parent pom. This is the only change
> that runs both the JUnit 4 and JUnit 5 tests.
>
> On Fri, Jun 17, 2022 at 12:13 PM Slawomir Jaranowski <
> s.jaranow...@gmail.com> wrote:
>
>> Import scope only sets versions of dependency - not add it to dependency.
>>
>> Please examine output of dependency:tree and look where is added
>> junit-platform-runner
>>
>> pt., 17 cze 2022 o 20:47 David Karr 
>> napisał(a):
>>
>> > Ok, what is the proper way to do that, considering I have the following
>> in
>> > a bom imported by my parent pom:
>> > 
>> > 
>> > org.junit
>> > junit-bom
>> > import
>> > pom
>> > 5.8.2
>> > 
>> > 
>> > 
>> >   org.springframework.boot
>> >   spring-boot-dependencies
>> >   ${spring-boot.version}
>> >   pom
>> >   import
>> > 
>> > 
>> > Do I add an exclusion to one or both of these?
>> >
>> > On Fri, Jun 17, 2022 at 11:37 AM Slawomir Jaranowski <
>> > s.jaranow...@gmail.com>
>> > wrote:
>> >
>> > > Do you have on your classpath - junit-platform-runner?
>> > > Please remove it.
>> > >
>> > >
>> > > pt., 17 cze 2022 o 20:23 David Karr 
>> > > napisał(a):
>> > >
>> > > > I'm posting a new note, as this might be a different issue.
>> > > >
>> > > > I recently got good advice on this list about how to properly
>> specify
>> > the
>> > > > version overrides for the junit-bom artifacts.  When I implemented
>> > that,
>> > > I
>> > > > saw that I was consistently getting the correct versions for those
>> > > > artifacts.
>> > > >
>> > > > However, I'm now confused by the behavior that I'm seeing from
>> > > Surefire.  I
>> > > > currently have a mix of JUnit 4 and JUnit 5 tests.  I'm pretty sure
>> > that
>> > > I
>> > > > had this working before, but now I see that it is not running any of
>> > the
>> > > > JUnit 5 tests.
>> > > >
>> > > > Note the following excerpt from my build:
>> > > > ---
>> > > > [INFO] --- maven-surefire-plugin:3.0.0-M7:test (default-test) @
>> > > > PlatformPilotMs ---
>> > > > [INFO] Using auto detected provider
>> > > > org.apache.maven.surefire.junit4.JUnit4Provider
>> > > > --
>> > > >
>> > > > I'm using the very latest M version, as that resolves other i