Hi,

On 17.06.22 20:46, David Karr wrote:
Ok, what is the proper way to do that, considering I have the following in
a bom imported by my parent pom:
--------------------
             <dependency>
                 <groupId>org.junit</groupId>
                 <artifactId>junit-bom</artifactId>
                 <scope>import</scope>
                 <type>pom</type>
                 <version>5.8.2</version>
             </dependency>
             <!-- Spring Dependencies -->
             <dependency>
               <groupId>org.springframework.boot</groupId>
               <artifactId>spring-boot-dependencies</artifactId>
               <version>${spring-boot.version}</version>
               <type>pom</type>
               <scope>import</scope>
             </dependency>
--------------------
Do I add an exclusion to one or both of these?


This is to have the available dependencies.
You have to add junit-jupiter-engine

like this (not inside dependencyManagement):


    <dependencies>
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-engine</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>


If you have a mix of JUNit 4 and JUnit 5 you have to go this way:

    <dependencies>
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-engine</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.junit.vintage</groupId>
            <artifactId>junit-vintage-engine</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

The vintage-engine is responsible for executing the JUnit 4 tests.


I have made an simple example with Spring Boot using JUnit 4 and JUnit 5.

Also added exemplary integration tests where one is JUnit 4 based and
one JUnit 5 based.

https://github.com/khmarbaise/minimal-junit4-junit5


Furthermore you shouldn't define the provider for surefire explicit
because it's identifying it itself. (In the given example I have not
defined the provider).


Kind regards
Karl Heinz Marbaise

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 <davidmichaelk...@gmail.com>
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




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

Reply via email to