Re: How to properly override junit-platform and junit-jupiter in a parent pom
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
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
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
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
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
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
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