[
https://issues.apache.org/jira/browse/HADOOP-19617?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18015749#comment-18015749
]
Shilun Fan commented on HADOOP-19617:
-------------------------------------
[~szetszwo] I hope the following information helps you resolve the issue:
*1. Compatibility Configuration between JUnit 4 and JUnit 5*
When upgrading to JUnit 5, we often use it alongside JUnit 4. To ensure that
JUnit 4 tests can run properly, we need to include the {{junit-vintage-engine}}
dependency in the {{{}pom.xml{}}}. Below is a complete configuration example:
{code:java}
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-params</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.platform</groupId>
<artifactId>junit-platform-launcher</artifactId>
<scope>test</scope>
</dependency>
<!-- Add junit-vintage-engine to ensure JUnit 4 tests run -->
<dependency>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
<scope>test</scope>
</dependency>{code}
For a detailed guide on how to migrate, I referred to a great document with
instructions on migrating from JUnit 4 to JUnit 5: [JUnit Official Migration
Guide|[https://docs.junit.org/current/user-guide/#migrating-from-junit4-running].]
*2. Maven Surefire Plugin Version Is Too Low*
Using an older version of the Maven Surefire plugin can lead to out-of-memory
(OOM) errors, stack overflow issues, and may even cause some tests to be
skipped. This can be resolved by upgrading the Surefire plugin. Here is a
related PR that helped address this issue during the Hadoop version upgrade:
[Hadoop PR#7785|https://github.com/apache/hadoop/pull/7785]. Upgrading to
Surefire version 3.5.3 alleviated some of these issues.
*3. Low Version of {{junit-platform-launcher}} Causing Test Skipping Issues*
While upgrading Hive, I encountered an issue where a low version of the
{{junit-platform-launcher}} was introduced through other dependencies, causing
tests to be skipped. The solution to this problem is to exclude these outdated
dependencies. We can refer to this PR for details: [Hive
PR#6001|https://github.com/apache/hive/pull/6001]
Here is the specific error message I encountered:
{code:java}
# Created at 2025-08-09T06:35:43.903
Aug 09, 2025 6:35:43 AM org.junit.platform.launcher.core.DefaultLauncher
handleThrowable# Created at 2025-08-09T06:35:43.903
WARNING: TestEngine with ID 'junit-jupiter' failed to discover tests# Created
at 2025-08-09T06:35:43.903
org.junit.platform.commons.JUnitException: OutputDirectoryProvider not
available; probably due to unaligned versions of the junit-platform-engine and
junit-platform-launcher jars on the classpath/module path.# Created at
2025-08-09T06:35:43.903
at
org.junit.platform.engine.EngineDiscoveryRequest.getOutputDirectoryProvider(EngineDiscoveryRequest.java:94)
{code}
If this doesn't resolve your issue, feel free to leave me a message, and I'll
respond as soon as I see it.
> [JDK17] Remove JUnit4 Dependency
> --------------------------------
>
> Key: HADOOP-19617
> URL: https://issues.apache.org/jira/browse/HADOOP-19617
> Project: Hadoop Common
> Issue Type: Sub-task
> Reporter: Shilun Fan
> Assignee: Shilun Fan
> Priority: Major
> Labels: pull-request-available
>
> Due to the extensive JUnit4 dependencies in the Hadoop modules, we will
> attempt to remove JUnit4 dependencies on a module-by-module basis.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]