This is an automated email from the ASF dual-hosted git repository.

hansva pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/hop.git


The following commit(s) were added to refs/heads/main by this push:
     new f711dcdaf9 Upgrade JUnit and migrate final tests (#6746)
f711dcdaf9 is described below

commit f711dcdaf9a31365bcf07f016352f3ddac095593
Author: Hans Van Akelyen <[email protected]>
AuthorDate: Mon Mar 9 15:31:18 2026 +0100

    Upgrade JUnit and migrate final tests (#6746)
---
 core/pom.xml                                       |   7 +-
 .../hop/concurrency/ConcurrencyTestRunner.java     |   4 +-
 .../test/java/org/apache/hop/core/CounterTest.java |  11 +-
 .../java/org/apache/hop/core/CountersTest.java     |   9 +-
 .../java/org/apache/hop/core/ResultFileTest.java   |  10 +-
 .../org/apache/hop/core/row/RowDataUtilTest.java   |  14 +-
 .../hop/core/row/value/ValueMetaStringTest.java    |   6 +-
 .../org/apache/hop/core/xml/XmlFormatterTest.java  |  15 ++-
 .../hop/junit/rules/RestoreHopEnvironment.java     | 143 ---------------------
 .../rules/RestoreHopEnvironmentExtension.java      |   2 +-
 .../serializer/multi/MetadataTestBase.java         |  14 +-
 .../multi/MultiMetadataProviderTest.java           |  13 +-
 .../multi/MultiMetadataSerializerTest.java         |  15 ++-
 engine-beam/pom.xml                                |   6 -
 engine/pom.xml                                     |   6 -
 .../hop/core/reflection/StringSearcherTest.java    |  13 +-
 .../junit/rules/RestoreHopEngineEnvironment.java   |  35 -----
 .../RestoreHopEngineEnvironmentExtension.java      |   3 +-
 .../pipeline/transform/DynamicWaitTimesTest.java   |  10 +-
 .../test/java/org/apache/hop/utils/TestUtils.java  |   4 +-
 .../apache/test/util/impl/DotEqualsValidator.java  |   2 +-
 .../test/util/impl/EqualsEqualsValidator.java      |   4 +-
 plugins/misc/git/pom.xml                           |   8 ++
 pom.xml                                            |   6 +-
 rap/pom.xml                                        |   6 -
 rcp/pom.xml                                        |   6 -
 ui/pom.xml                                         |   6 -
 27 files changed, 113 insertions(+), 265 deletions(-)

diff --git a/core/pom.xml b/core/pom.xml
index 780c4d38a3..93d89c5864 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -366,6 +366,7 @@
             <artifactId>jackson-dataformat-xml</artifactId>
             <scope>test</scope>
         </dependency>
+
         <dependency>
             <groupId>org.javassist</groupId>
             <artifactId>javassist</artifactId>
@@ -378,12 +379,6 @@
             </exclusions>
         </dependency>
 
-        <dependency>
-            <groupId>org.junit.vintage</groupId>
-            <artifactId>junit-vintage-engine</artifactId>
-            <version>${junit.version}</version>
-            <scope>test</scope>
-        </dependency>
         <dependency>
             <groupId>xmlunit</groupId>
             <artifactId>xmlunit</artifactId>
diff --git 
a/core/src/test/java/org/apache/hop/concurrency/ConcurrencyTestRunner.java 
b/core/src/test/java/org/apache/hop/concurrency/ConcurrencyTestRunner.java
index 2d9b4e2484..95684efc2e 100644
--- a/core/src/test/java/org/apache/hop/concurrency/ConcurrencyTestRunner.java
+++ b/core/src/test/java/org/apache/hop/concurrency/ConcurrencyTestRunner.java
@@ -31,7 +31,7 @@ import java.util.concurrent.Future;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.TimeoutException;
 import java.util.concurrent.atomic.AtomicBoolean;
-import org.junit.Assert;
+import org.junit.jupiter.api.Assertions;
 
 /**
  * This class is aimed to be a general runner for concurrency tests. You need 
to follow a convention
@@ -196,7 +196,7 @@ class ConcurrencyTestRunner<M, B> {
         String stacktrace = Throwables.getStackTraceAsString(throwable);
         message.append('\n').append(stacktrace);
       }
-      Assert.fail(message.toString());
+      Assertions.fail(message.toString());
     }
   }
 
diff --git a/core/src/test/java/org/apache/hop/core/CounterTest.java 
b/core/src/test/java/org/apache/hop/core/CounterTest.java
index f9799b6296..909d9fc0e1 100644
--- a/core/src/test/java/org/apache/hop/core/CounterTest.java
+++ b/core/src/test/java/org/apache/hop/core/CounterTest.java
@@ -17,11 +17,16 @@
 
 package org.apache.hop.core;
 
-import junit.framework.TestCase;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+import org.junit.jupiter.api.Test;
 
 /** Test class for counter functionality. */
-public class CounterTest extends TestCase {
+class CounterTest {
   /** Constructor test 1. */
+  @Test
   public void testConstructor1() {
     Counter cnt1 = new Counter();
     assertEquals(1L, cnt1.getCounter());
@@ -53,6 +58,7 @@ public class CounterTest extends TestCase {
   }
 
   /** Test the setting of stuff. */
+  @Test
   public void testSets() {
     Counter cnt1 = new Counter();
     cnt1.setCounter(5L);
@@ -69,6 +75,7 @@ public class CounterTest extends TestCase {
   }
 
   /** Test next(). */
+  @Test
   public void testNext() {
     Counter cnt1 = new Counter();
     cnt1.setCounter(2L);
diff --git a/core/src/test/java/org/apache/hop/core/CountersTest.java 
b/core/src/test/java/org/apache/hop/core/CountersTest.java
index 1df3a1a619..6c171df14b 100644
--- a/core/src/test/java/org/apache/hop/core/CountersTest.java
+++ b/core/src/test/java/org/apache/hop/core/CountersTest.java
@@ -17,11 +17,16 @@
 
 package org.apache.hop.core;
 
-import junit.framework.TestCase;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertNull;
+import static org.junit.jupiter.api.Assertions.assertSame;
+
+import org.junit.jupiter.api.Test;
 
 /** Test class for counters functionality. */
-public class CountersTest extends TestCase {
+class CountersTest {
   /** Test about all. Class is not too big. */
+  @Test
   public void testGeneralFunctionality() {
     Counters cntrs = Counters.getInstance();
     assertNull(cntrs.getCounter("counter1"));
diff --git a/core/src/test/java/org/apache/hop/core/ResultFileTest.java 
b/core/src/test/java/org/apache/hop/core/ResultFileTest.java
index 29eea3b7aa..243c9863ca 100644
--- a/core/src/test/java/org/apache/hop/core/ResultFileTest.java
+++ b/core/src/test/java/org/apache/hop/core/ResultFileTest.java
@@ -22,6 +22,7 @@ import static org.junit.jupiter.api.Assertions.assertNotNull;
 import static org.junit.jupiter.api.Assertions.assertTrue;
 
 import java.io.File;
+import java.nio.file.Path;
 import java.util.Calendar;
 import java.util.Date;
 import org.apache.commons.vfs2.FileObject;
@@ -34,11 +35,13 @@ import 
org.apache.hop.junit.rules.RestoreHopEnvironmentExtension;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.ExtendWith;
-import org.junit.rules.TemporaryFolder;
+import org.junit.jupiter.api.io.TempDir;
 
 @ExtendWith(RestoreHopEnvironmentExtension.class)
 class ResultFileTest {
 
+  @TempDir Path tempDirPath;
+
   @BeforeEach
   void before() throws Exception {
     HopClientEnvironment.init();
@@ -46,8 +49,8 @@ class ResultFileTest {
 
   @Test
   void testGetRow() throws HopFileException, FileSystemException {
-    File tempDir = new File(new TemporaryFolder().toString());
-    FileObject tempFile = HopVfs.createTempFile("prefix", "suffix", 
tempDir.toString());
+    File tempDir = tempDirPath.toFile();
+    FileObject tempFile = HopVfs.createTempFile("prefix", "suffix", 
tempDir.getAbsolutePath());
     Date timeBeforeFile = Calendar.getInstance().getTime();
     ResultFile resultFile =
         new ResultFile(ResultFile.FILE_TYPE_GENERAL, tempFile, 
"myOriginParent", "myOrigin");
@@ -73,6 +76,5 @@ class ResultFileTest {
         "ResultFile timestamp is created in the expected window");
 
     tempFile.delete();
-    tempDir.delete();
   }
 }
diff --git a/core/src/test/java/org/apache/hop/core/row/RowDataUtilTest.java 
b/core/src/test/java/org/apache/hop/core/row/RowDataUtilTest.java
index ce28626c94..14b78230cd 100644
--- a/core/src/test/java/org/apache/hop/core/row/RowDataUtilTest.java
+++ b/core/src/test/java/org/apache/hop/core/row/RowDataUtilTest.java
@@ -17,9 +17,14 @@
 
 package org.apache.hop.core.row;
 
-import junit.framework.TestCase;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotSame;
+import static org.junit.jupiter.api.Assertions.assertSame;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
-public class RowDataUtilTest extends TestCase {
+import org.junit.jupiter.api.Test;
+
+class RowDataUtilTest {
   public boolean arrayCompare(Object[] arr1, int start1, Object[] arr2, int 
start2, int len) {
     boolean rcode = true;
 
@@ -36,6 +41,7 @@ public class RowDataUtilTest extends TestCase {
     return rcode;
   }
 
+  @Test
   public void testResizeArray() {
     Object[] arr1 = new Object[] {"test", Boolean.TRUE, 100L, 101L, new 
String("test1")};
     Object[] nullArr =
@@ -65,6 +71,7 @@ public class RowDataUtilTest extends TestCase {
     assertTrue(arrayCompare(arr1, 0, arr4, 0, arr1.length)); // Elements of 
arr1 are copied
   }
 
+  @Test
   public void testRemoveItem() {
     Object[] arr = new Object[] {1L, 2L, 3L, 4L, 5L};
 
@@ -98,6 +105,7 @@ public class RowDataUtilTest extends TestCase {
     assertTrue(arrayCompare(newArr4, 0, comp4, 0, newArr4.length));
   }
 
+  @Test
   public void testAddRowData() {
     Object[] arr = new Object[] {1L, 2L, 3L};
 
@@ -120,6 +128,7 @@ public class RowDataUtilTest extends TestCase {
     assertTrue(arrayCompare(newArr4, 0, arr, 0, arr.length));
   }
 
+  @Test
   public void testAddValueData() {
     Object[] arr1 = new Object[] {1L};
     Object[] arr2 = new Object[] {1L, 2L};
@@ -133,6 +142,7 @@ public class RowDataUtilTest extends TestCase {
     assertTrue(arrayCompare(newArr2, 0, arr2, 0, arr2.length));
   }
 
+  @Test
   public void testRemoveItems() {
     Object[] arr1 = new Object[] {1L, 2L, 3L, 4L, 5L};
     Object[] comp1 = new Object[] {2L, 4L};
diff --git 
a/core/src/test/java/org/apache/hop/core/row/value/ValueMetaStringTest.java 
b/core/src/test/java/org/apache/hop/core/row/value/ValueMetaStringTest.java
index e7479c3894..7b49af9665 100644
--- a/core/src/test/java/org/apache/hop/core/row/value/ValueMetaStringTest.java
+++ b/core/src/test/java/org/apache/hop/core/row/value/ValueMetaStringTest.java
@@ -17,11 +17,11 @@
 
 package org.apache.hop.core.row.value;
 
-import static junit.framework.TestCase.failNotEquals;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertFalse;
 import static org.junit.jupiter.api.Assertions.assertNull;
 import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.junit.jupiter.api.Assertions.fail;
 
 import java.math.BigDecimal;
 import java.sql.Timestamp;
@@ -949,11 +949,11 @@ class ValueMetaStringTest {
   private static void assertSignum(String msg, int expected, int actual) {
     if (expected < 0) {
       if (actual >= 0) {
-        failNotEquals(msg, "(<0)", actual);
+        fail(msg + " expected negative but was: " + actual);
       }
     } else if (expected > 0) {
       if (actual <= 0) {
-        failNotEquals(msg, "(>0)", actual);
+        fail(msg + " expected positive but was: " + actual);
       }
     } else {
       assertEquals(expected, actual, msg);
diff --git a/core/src/test/java/org/apache/hop/core/xml/XmlFormatterTest.java 
b/core/src/test/java/org/apache/hop/core/xml/XmlFormatterTest.java
index 2692240ba5..60aaaf9209 100644
--- a/core/src/test/java/org/apache/hop/core/xml/XmlFormatterTest.java
+++ b/core/src/test/java/org/apache/hop/core/xml/XmlFormatterTest.java
@@ -16,12 +16,13 @@
  */
 package org.apache.hop.core.xml;
 
-import static org.custommonkey.xmlunit.XMLAssert.assertXMLEqual;
 import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 import java.io.InputStream;
 import java.nio.charset.StandardCharsets;
 import org.apache.commons.io.IOUtils;
+import org.custommonkey.xmlunit.Diff;
 import org.custommonkey.xmlunit.XMLUnit;
 import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.Test;
@@ -47,7 +48,8 @@ class XmlFormatterTest {
     }
 
     String result = XmlFormatter.format(inXml);
-    assertXMLEqual(expectedXml, result);
+    Diff diff = XMLUnit.compareXML(expectedXml, result);
+    assertTrue(diff.similar(), "XML documents are not equal: " + 
diff.toString());
   }
 
   @Test
@@ -64,7 +66,8 @@ class XmlFormatterTest {
     }
 
     String result = XmlFormatter.format(inXml);
-    assertXMLEqual(expectedXml, result);
+    Diff diff = XMLUnit.compareXML(expectedXml, result);
+    assertTrue(diff.similar(), "XML documents are not equal: " + 
diff.toString());
   }
 
   @Test
@@ -82,7 +85,8 @@ class XmlFormatterTest {
     }
 
     String result = XmlFormatter.format(inXml);
-    assertXMLEqual(expectedXml, result);
+    Diff diff = XMLUnit.compareXML(expectedXml, result);
+    assertTrue(diff.similar(), "XML documents are not equal: " + 
diff.toString());
   }
 
   @Test
@@ -100,6 +104,7 @@ class XmlFormatterTest {
     }
 
     String result = XmlFormatter.format(inXml);
-    assertXMLEqual(expectedXml, result);
+    Diff diff = XMLUnit.compareXML(expectedXml, result);
+    assertTrue(diff.similar(), "XML documents are not equal: " + 
diff.toString());
   }
 }
diff --git 
a/core/src/test/java/org/apache/hop/junit/rules/RestoreHopEnvironment.java 
b/core/src/test/java/org/apache/hop/junit/rules/RestoreHopEnvironment.java
deleted file mode 100644
index c9c40be346..0000000000
--- a/core/src/test/java/org/apache/hop/junit/rules/RestoreHopEnvironment.java
+++ /dev/null
@@ -1,143 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.hop.junit.rules;
-
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.sql.Timestamp;
-import java.text.SimpleDateFormat;
-import java.util.Locale;
-import java.util.Properties;
-import java.util.TimeZone;
-import org.apache.commons.io.FileUtils;
-import org.apache.hop.core.Const;
-import org.apache.hop.core.HopClientEnvironment;
-import org.apache.hop.core.database.Database;
-import org.apache.hop.core.database.DatabaseMeta;
-import org.apache.hop.core.extension.ExtensionPointMap;
-import org.apache.hop.core.logging.HopLogStore;
-import org.apache.hop.core.logging.LogChannel;
-import org.apache.hop.core.logging.LogChannelFactory;
-import org.apache.hop.core.logging.MetricsRegistry;
-import org.apache.hop.core.plugins.PluginRegistry;
-import org.apache.hop.core.row.value.ValueMetaBase;
-import org.apache.hop.core.row.value.ValueMetaFactory;
-import org.apache.hop.core.row.value.timestamp.SimpleTimestampFormat;
-import org.apache.hop.core.vfs.HopVfs;
-import org.apache.hop.core.xml.XmlHandler;
-import org.apache.hop.core.xml.XmlHandlerCache;
-import org.apache.hop.i18n.LanguageChoice;
-import org.junit.rules.ExternalResource;
-
-public class RestoreHopEnvironment extends ExternalResource {
-  private Properties originalProperties;
-  private Locale originalLocale;
-  private Locale originalFormatLocale;
-  private TimeZone originalTimezone;
-  private Path tmpHopHome;
-
-  /**
-   * Creates a {@code RestoreHopEnvironment} rule that restores all system 
properties and resets any
-   * Hop related environment instances.
-   */
-  public RestoreHopEnvironment() {
-    // Do nothing
-  }
-
-  void defaultInit() throws Throwable {
-    // make sure static class initializers are correctly initialized
-    // re-init
-    cleanUp();
-    HopClientEnvironment.init();
-
-    // initialize some classes, this will fail if some tests init this classes 
before any Hop init()
-    // the best thing to do is to invoke this ClassRule in every test
-    Class.forName(Database.class.getName());
-    Class.forName(Timestamp.class.getName());
-    Class.forName(ValueMetaBase.class.getName());
-    Class.forName(SimpleTimestampFormat.class.getName());
-    Class.forName(SimpleDateFormat.class.getName());
-    Class.forName(XmlHandler.class.getName());
-    Class.forName(LogChannel.class.getName());
-    DatabaseMeta.init();
-    ExtensionPointMap.getInstance().reInitialize();
-    HopVfs.reset(); // reinit
-  }
-
-  void cleanUp() {
-    HopClientEnvironment.reset();
-    PluginRegistry.getInstance().reset();
-    MetricsRegistry.getInstance().reset();
-    ExtensionPointMap.getInstance().reset();
-    if (HopLogStore.isInitialized()) {
-      HopLogStore.getInstance().reset();
-    }
-    HopLogStore.setLogChannelFactory(new LogChannelFactory());
-    HopVfs.reset();
-    XmlHandlerCache.getInstance().clear();
-    ValueMetaFactory.pluginRegistry = PluginRegistry.getInstance();
-  }
-
-  @Override
-  protected void before() throws Throwable {
-    originalProperties = System.getProperties();
-    System.setProperties(copyOf(originalProperties));
-
-    originalLocale = Locale.getDefault();
-    originalFormatLocale = Locale.getDefault(Locale.Category.FORMAT);
-    originalTimezone = TimeZone.getDefault();
-    TimeZone.setDefault(TimeZone.getTimeZone("UTC"));
-    Locale.setDefault(Locale.US);
-    Locale.setDefault(Locale.Category.FORMAT, Locale.US);
-    LanguageChoice.getInstance().setDefaultLocale(Locale.US);
-
-    tmpHopHome = Files.createTempDirectory(Long.toString(System.nanoTime()));
-    System.setProperty("file.encoding", "UTF-8");
-    System.setProperty("user.timezone", "UTC");
-    System.setProperty("HOP_HOME", tmpHopHome.toString());
-    System.setProperty(Const.HOP_DISABLE_CONSOLE_LOGGING, "Y");
-    System.clearProperty(Const.VFS_USER_DIR_IS_ROOT);
-    System.clearProperty(Const.HOP_LENIENT_STRING_TO_NUMBER_CONVERSION);
-    System.clearProperty(Const.HOP_DEFAULT_INTEGER_FORMAT);
-    System.clearProperty(Const.HOP_DEFAULT_NUMBER_FORMAT);
-    System.clearProperty(Const.HOP_DEFAULT_BIGNUMBER_FORMAT);
-    System.clearProperty(Const.HOP_DEFAULT_DATE_FORMAT);
-    System.clearProperty(Const.HOP_DEFAULT_TIMESTAMP_FORMAT);
-    System.clearProperty(Const.HOP_EMPTY_STRING_DIFFERS_FROM_NULL);
-
-    defaultInit();
-  }
-
-  private Properties copyOf(Properties originalProperties) {
-    Properties copy = new Properties();
-    copy.putAll(originalProperties);
-    return copy;
-  }
-
-  @Override
-  protected void after() {
-    cleanUp();
-
-    System.setProperties(originalProperties);
-    Locale.setDefault(originalLocale);
-    Locale.setDefault(Locale.Category.FORMAT, originalFormatLocale);
-    LanguageChoice.getInstance().setDefaultLocale(originalLocale);
-    TimeZone.setDefault(originalTimezone);
-    FileUtils.deleteQuietly(tmpHopHome.toFile());
-  }
-}
diff --git 
a/core/src/test/java/org/apache/hop/junit/rules/RestoreHopEnvironmentExtension.java
 
b/core/src/test/java/org/apache/hop/junit/rules/RestoreHopEnvironmentExtension.java
index 8dee942c4a..a340d575ba 100644
--- 
a/core/src/test/java/org/apache/hop/junit/rules/RestoreHopEnvironmentExtension.java
+++ 
b/core/src/test/java/org/apache/hop/junit/rules/RestoreHopEnvironmentExtension.java
@@ -48,7 +48,7 @@ import org.junit.jupiter.api.extension.ExtensionContext;
 
 /**
  * JUnit 5 Extension that restores all system properties and resets any Hop 
related environment
- * instances. This is the JUnit 5 equivalent of the JUnit 4 
RestoreHopEnvironment rule.
+ * instances.
  */
 public class RestoreHopEnvironmentExtension implements BeforeAllCallback, 
AfterAllCallback {
   private Properties originalProperties;
diff --git 
a/core/src/test/java/org/apache/hop/metadata/serializer/multi/MetadataTestBase.java
 
b/core/src/test/java/org/apache/hop/metadata/serializer/multi/MetadataTestBase.java
index fc76f4ea6c..3d89550faf 100644
--- 
a/core/src/test/java/org/apache/hop/metadata/serializer/multi/MetadataTestBase.java
+++ 
b/core/src/test/java/org/apache/hop/metadata/serializer/multi/MetadataTestBase.java
@@ -18,10 +18,11 @@
 
 package org.apache.hop.metadata.serializer.multi;
 
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
-import junit.framework.TestCase;
 import org.apache.hop.core.HopClientEnvironment;
 import org.apache.hop.core.encryption.HopTwoWayPasswordEncoder;
 import org.apache.hop.core.encryption.ITwoWayPasswordEncoder;
@@ -32,17 +33,18 @@ import org.apache.hop.metadata.api.HopMetadata;
 import org.apache.hop.metadata.api.IHopMetadataProvider;
 import org.apache.hop.metadata.plugin.MetadataPluginType;
 import org.apache.hop.metadata.serializer.memory.MemoryMetadataProvider;
-import org.junit.Ignore;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Disabled;
 
-@Ignore("This test needs to be reviewed")
-public class MetadataTestBase extends TestCase {
+@Disabled("This test needs to be reviewed")
+class MetadataTestBase {
   protected MultiMetadataProvider multiMetadataProvider;
   protected MemoryMetadataProvider provider1;
   protected MemoryMetadataProvider provider2;
   protected MemoryMetadataProvider provider3;
 
-  @Override
-  protected void setUp() throws Exception {
+  @BeforeEach
+  void setUp() throws Exception {
     HopClientEnvironment.init();
     PluginRegistry registry = PluginRegistry.getInstance();
     registry.registerPluginType(MetadataPluginType.class);
diff --git 
a/core/src/test/java/org/apache/hop/metadata/serializer/multi/MultiMetadataProviderTest.java
 
b/core/src/test/java/org/apache/hop/metadata/serializer/multi/MultiMetadataProviderTest.java
index e5499823d1..9c8cf4af54 100644
--- 
a/core/src/test/java/org/apache/hop/metadata/serializer/multi/MultiMetadataProviderTest.java
+++ 
b/core/src/test/java/org/apache/hop/metadata/serializer/multi/MultiMetadataProviderTest.java
@@ -18,6 +18,10 @@
 
 package org.apache.hop.metadata.serializer.multi;
 
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
 import java.util.List;
 import org.apache.hop.core.encryption.HopTwoWayPasswordEncoder;
 import org.apache.hop.core.exception.HopException;
@@ -25,9 +29,11 @@ import org.apache.hop.core.variables.Variables;
 import org.apache.hop.metadata.api.IHopMetadata;
 import org.apache.hop.metadata.api.IHopMetadataProvider;
 import org.apache.hop.metadata.serializer.memory.MemoryMetadataProvider;
+import org.junit.jupiter.api.Test;
 
-public class MultiMetadataProviderTest extends MetadataTestBase {
+class MultiMetadataProviderTest extends MetadataTestBase {
 
+  @Test
   public void testGetDescription() {
     String description = multiMetadataProvider.getDescription();
     assertNotNull(description);
@@ -35,6 +41,7 @@ public class MultiMetadataProviderTest extends 
MetadataTestBase {
         "Multi Metadata Provider with 3 providers: Provider1, Provider2, 
Provider3", description);
   }
 
+  @Test
   public void testGetMetadataClasses() {
     List<Class<IHopMetadata>> list = 
multiMetadataProvider.getMetadataClasses();
     assertEquals(2, list.size());
@@ -42,11 +49,13 @@ public class MultiMetadataProviderTest extends 
MetadataTestBase {
     assertTrue(list.contains(MetadataType2.class));
   }
 
+  @Test
   public void testGetMetadataClassForKey() throws HopException {
     assertEquals(MetadataType1.class, 
multiMetadataProvider.getMetadataClassForKey("type-1"));
     assertEquals(MetadataType2.class, 
multiMetadataProvider.getMetadataClassForKey("type-2"));
   }
 
+  @Test
   public void testFindProvider() {
     IHopMetadataProvider look1 = 
multiMetadataProvider.findProvider("Provider1");
     assertNotNull(look1);
@@ -59,11 +68,13 @@ public class MultiMetadataProviderTest extends 
MetadataTestBase {
     assertEquals(provider3, look3);
   }
 
+  @Test
   public void testGetProviders() {
     List<IHopMetadataProvider> list = multiMetadataProvider.getProviders();
     assertEquals(3, list.size());
   }
 
+  @Test
   public void testSetProviders() {
     List<IHopMetadataProvider> list = multiMetadataProvider.getProviders();
     MemoryMetadataProvider provider4 =
diff --git 
a/core/src/test/java/org/apache/hop/metadata/serializer/multi/MultiMetadataSerializerTest.java
 
b/core/src/test/java/org/apache/hop/metadata/serializer/multi/MultiMetadataSerializerTest.java
index 998c472296..c8bf0e2ad8 100644
--- 
a/core/src/test/java/org/apache/hop/metadata/serializer/multi/MultiMetadataSerializerTest.java
+++ 
b/core/src/test/java/org/apache/hop/metadata/serializer/multi/MultiMetadataSerializerTest.java
@@ -18,11 +18,17 @@
 
 package org.apache.hop.metadata.serializer.multi;
 
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
 import java.util.List;
 import org.apache.hop.core.exception.HopException;
 import org.apache.hop.metadata.api.IHopMetadataSerializer;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
-public class MultiMetadataSerializerTest extends MetadataTestBase {
+class MultiMetadataSerializerTest extends MetadataTestBase {
 
   protected MetadataType1 object1;
   protected MetadataType2 object2;
@@ -31,7 +37,8 @@ public class MultiMetadataSerializerTest extends 
MetadataTestBase {
   protected MetadataType1 object5;
 
   @Override
-  protected void setUp() throws Exception {
+  @BeforeEach
+  void setUp() throws Exception {
     super.setUp();
 
     // Throw a few objects in providers 1, 2 and 3
@@ -52,6 +59,7 @@ public class MultiMetadataSerializerTest extends 
MetadataTestBase {
     provider3.getSerializer(type1).save(object5); // same name as in provider 1
   }
 
+  @Test
   public void testLoad() throws HopException {
     IHopMetadataSerializer<MetadataType1> s1 =
         multiMetadataProvider.getSerializer(MetadataType1.class);
@@ -81,6 +89,7 @@ public class MultiMetadataSerializerTest extends 
MetadataTestBase {
     assertEquals("v4", m4.getValue());
   }
 
+  @Test
   public void testSave() throws HopException {
 
     MetadataType1 m6 = new MetadataType1("t1o6", "d6", "v6");
@@ -112,6 +121,7 @@ public class MultiMetadataSerializerTest extends 
MetadataTestBase {
     assertEquals(m7, t1o7);
   }
 
+  @Test
   public void testListObjectNames() throws HopException {
     IHopMetadataSerializer<MetadataType1> s1 =
         multiMetadataProvider.getSerializer(MetadataType1.class);
@@ -128,6 +138,7 @@ public class MultiMetadataSerializerTest extends 
MetadataTestBase {
     assertTrue(names2.contains("t2o4"));
   }
 
+  @Test
   public void testExists() throws HopException {
     IHopMetadataSerializer<MetadataType1> s1 =
         multiMetadataProvider.getSerializer(MetadataType1.class);
diff --git a/engine-beam/pom.xml b/engine-beam/pom.xml
index a4441f4531..c2dc0c2bff 100644
--- a/engine-beam/pom.xml
+++ b/engine-beam/pom.xml
@@ -115,12 +115,6 @@
             <type>test-jar</type>
             <scope>test</scope>
         </dependency>
-        <dependency>
-            <groupId>org.junit.vintage</groupId>
-            <artifactId>junit-vintage-engine</artifactId>
-            <version>${junit.version}</version>
-            <scope>test</scope>
-        </dependency>
     </dependencies>
 
 </project>
diff --git a/engine/pom.xml b/engine/pom.xml
index 696c231ccd..f5bad594c8 100644
--- a/engine/pom.xml
+++ b/engine/pom.xml
@@ -222,12 +222,6 @@
             <type>test-jar</type>
             <scope>test</scope>
         </dependency>
-        <dependency>
-            <groupId>org.junit.vintage</groupId>
-            <artifactId>junit-vintage-engine</artifactId>
-            <version>${junit.version}</version>
-            <scope>test</scope>
-        </dependency>
     </dependencies>
 
     <build>
diff --git 
a/engine/src/test/java/org/apache/hop/core/reflection/StringSearcherTest.java 
b/engine/src/test/java/org/apache/hop/core/reflection/StringSearcherTest.java
index d3d5ecd999..387e904c62 100644
--- 
a/engine/src/test/java/org/apache/hop/core/reflection/StringSearcherTest.java
+++ 
b/engine/src/test/java/org/apache/hop/core/reflection/StringSearcherTest.java
@@ -16,20 +16,13 @@
  */
 package org.apache.hop.core.reflection;
 
-import org.apache.hop.core.HopEnvironment;
-import org.apache.hop.junit.rules.RestoreHopEngineEnvironment;
-import org.junit.BeforeClass;
-import org.junit.ClassRule;
+import org.apache.hop.junit.rules.RestoreHopEngineEnvironmentExtension;
+import org.junit.jupiter.api.extension.ExtendWith;
 
 // import org.apache.hop.pipeline.transforms.filterrows.FilterRowsMeta;
 
+@ExtendWith(RestoreHopEngineEnvironmentExtension.class)
 public class StringSearcherTest {
-  @ClassRule public static RestoreHopEngineEnvironment env = new 
RestoreHopEngineEnvironment();
-
-  @BeforeClass
-  public static void setUpBeforeClass() throws 
org.apache.hop.core.exception.HopException {
-    HopEnvironment.init();
-  }
 
   // TODO: Move Test
   /* @Test
diff --git 
a/engine/src/test/java/org/apache/hop/junit/rules/RestoreHopEngineEnvironment.java
 
b/engine/src/test/java/org/apache/hop/junit/rules/RestoreHopEngineEnvironment.java
deleted file mode 100644
index 93965f0a52..0000000000
--- 
a/engine/src/test/java/org/apache/hop/junit/rules/RestoreHopEngineEnvironment.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.hop.junit.rules;
-
-import org.apache.hop.core.HopEnvironment;
-
-public class RestoreHopEngineEnvironment extends RestoreHopEnvironment {
-
-  @Override
-  void defaultInit() throws Throwable {
-    super.defaultInit();
-    HopEnvironment.init();
-  }
-
-  @Override
-  void cleanUp() {
-    HopEnvironment.reset();
-    super.cleanUp();
-  }
-}
diff --git 
a/engine/src/test/java/org/apache/hop/junit/rules/RestoreHopEngineEnvironmentExtension.java
 
b/engine/src/test/java/org/apache/hop/junit/rules/RestoreHopEngineEnvironmentExtension.java
index 436b7096f0..f88982a69b 100644
--- 
a/engine/src/test/java/org/apache/hop/junit/rules/RestoreHopEngineEnvironmentExtension.java
+++ 
b/engine/src/test/java/org/apache/hop/junit/rules/RestoreHopEngineEnvironmentExtension.java
@@ -21,8 +21,7 @@ import org.apache.hop.core.HopEnvironment;
 
 /**
  * JUnit 5 Extension that restores all system properties and resets any Hop 
related environment
- * instances, including full engine initialization. This is the JUnit 5 
equivalent of the JUnit 4
- * RestoreHopEngineEnvironment rule.
+ * instances, including full engine initialization.
  */
 public class RestoreHopEngineEnvironmentExtension extends 
RestoreHopEnvironmentExtension {
 
diff --git 
a/engine/src/test/java/org/apache/hop/pipeline/transform/DynamicWaitTimesTest.java
 
b/engine/src/test/java/org/apache/hop/pipeline/transform/DynamicWaitTimesTest.java
index 2dc2072799..15fb608b91 100644
--- 
a/engine/src/test/java/org/apache/hop/pipeline/transform/DynamicWaitTimesTest.java
+++ 
b/engine/src/test/java/org/apache/hop/pipeline/transform/DynamicWaitTimesTest.java
@@ -17,20 +17,25 @@
 
 package org.apache.hop.pipeline.transform;
 
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
 import java.util.List;
 import java.util.concurrent.atomic.AtomicInteger;
-import junit.framework.TestCase;
 import org.apache.hop.core.BlockingRowSet;
 import org.apache.hop.core.IRowSet;
+import org.junit.jupiter.api.Test;
 
-public class DynamicWaitTimesTest extends TestCase {
+class DynamicWaitTimesTest {
 
   DynamicWaitTimes.SingleStreamStatus status;
   AtomicInteger activeStreamIndex = new AtomicInteger();
 
+  @Test
   public void testSingleStreamStatus() {
     IRowSet rowSet = new BlockingRowSet(3);
     status = DynamicWaitTimes.build(Collections.singletonList(rowSet), () -> 
0, 20);
@@ -43,6 +48,7 @@ public class DynamicWaitTimesTest extends TestCase {
     assertEquals(20, status.get());
   }
 
+  @Test
   public void testMultiStreamStatus() {
     List<IRowSet> rowSetList =
         new ArrayList<>(
diff --git a/engine/src/test/java/org/apache/hop/utils/TestUtils.java 
b/engine/src/test/java/org/apache/hop/utils/TestUtils.java
index 1400a439f2..821a8d4ef8 100644
--- a/engine/src/test/java/org/apache/hop/utils/TestUtils.java
+++ b/engine/src/test/java/org/apache/hop/utils/TestUtils.java
@@ -17,7 +17,7 @@
 
 package org.apache.hop.utils;
 
-import static org.junit.Assert.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
 
 import java.io.File;
 import java.io.IOException;
@@ -106,7 +106,7 @@ public class TestUtils {
 
   public static void checkEqualsHashCodeConsistency(Object object1, Object 
object2) {
     if (object1.equals(object2)) {
-      assertEquals("inconsistent hashcode and equals", object1.hashCode(), 
object2.hashCode());
+      assertEquals(object1.hashCode(), object2.hashCode(), "inconsistent 
hashcode and equals");
     }
   }
 }
diff --git 
a/engine/src/test/java/org/apache/test/util/impl/DotEqualsValidator.java 
b/engine/src/test/java/org/apache/test/util/impl/DotEqualsValidator.java
index 8fdbcc5723..864c74239d 100644
--- a/engine/src/test/java/org/apache/test/util/impl/DotEqualsValidator.java
+++ b/engine/src/test/java/org/apache/test/util/impl/DotEqualsValidator.java
@@ -17,7 +17,7 @@
 
 package org.apache.test.util.impl;
 
-import static org.junit.Assert.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
 
 import org.apache.test.util.IObjectValidator;
 
diff --git 
a/engine/src/test/java/org/apache/test/util/impl/EqualsEqualsValidator.java 
b/engine/src/test/java/org/apache/test/util/impl/EqualsEqualsValidator.java
index 7ad03090aa..6434e927cc 100644
--- a/engine/src/test/java/org/apache/test/util/impl/EqualsEqualsValidator.java
+++ b/engine/src/test/java/org/apache/test/util/impl/EqualsEqualsValidator.java
@@ -17,7 +17,7 @@
 
 package org.apache.test.util.impl;
 
-import static org.junit.Assert.assertSame;
+import static org.junit.jupiter.api.Assertions.assertSame;
 
 import org.apache.test.util.IObjectValidator;
 
@@ -26,6 +26,6 @@ public class EqualsEqualsValidator<T> implements 
IObjectValidator<T> {
   @Override
   public void validate(T expected, Object actual) {
     assertSame(
-        "Expected " + expected + " == " + actual + " to evaluate to true.", 
expected, actual);
+        expected, actual, "Expected " + expected + " == " + actual + " to 
evaluate to true.");
   }
 }
diff --git a/plugins/misc/git/pom.xml b/plugins/misc/git/pom.xml
index 5f9cdd113c..8410a75434 100644
--- a/plugins/misc/git/pom.xml
+++ b/plugins/misc/git/pom.xml
@@ -60,12 +60,20 @@
             <artifactId>org.eclipse.jgit.ssh.apache</artifactId>
             <version>${dependency.jgit.revision}</version>
         </dependency>
+        <!-- JUnit 4 API needed by org.eclipse.jgit.junit.RepositoryTestCase 
(TemporaryFolder, etc.) -->
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <version>4.13.2</version>
+            <scope>test</scope>
+        </dependency>
         <dependency>
             <groupId>org.eclipse.jgit</groupId>
             <artifactId>org.eclipse.jgit.junit</artifactId>
             <version>${dependency.jgit.revision}</version>
             <scope>test</scope>
         </dependency>
+        <!-- Required to run UIGitTest: 
org.eclipse.jgit.junit.RepositoryTestCase expects JUnit 4 TestName rule -->
         <dependency>
             <groupId>org.junit.vintage</groupId>
             <artifactId>junit-vintage-engine</artifactId>
diff --git a/pom.xml b/pom.xml
index b3b17c1c0e..bff202c52b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -110,7 +110,7 @@
         <jandex.version>3.5.3</jandex.version>
         <java-hamcrest.version>2.0.0.0</java-hamcrest.version>
         <javadoc.failOnWarnings>false</javadoc.failOnWarnings>
-        <junit.version>5.14.3</junit.version>
+        <junit.version>6.0.3</junit.version>
         
<license.bundleLicenseFile>META-INF/LICENSE.txt</license.bundleLicenseFile>
         <license.failOnLicenseCheck>false</license.failOnLicenseCheck>
         <license.inceptionYear>2020</license.inceptionYear>
@@ -121,7 +121,9 @@
         <maven-failsafe-plugin.forkCount>1</maven-failsafe-plugin.forkCount>
         
<maven-failsafe-plugin.reuseForks>true</maven-failsafe-plugin.reuseForks>
         <maven-javadoc-plugin.version>3.10.0</maven-javadoc-plugin.version>
-        <maven-surefire-plugin.argLine>-Duser.timezone=UTC
+        
<maven-surefire-plugin.argLine>-javaagent:${settings.localRepository}/org/mockito/mockito-core/${mockito-core.version}/mockito-core-${mockito-core.version}.jar
+            -Xshare:off
+            -Duser.timezone=UTC
             -Dfile.encoding=UTF-8
             -Duser.language=en -Duser.country=US
             --add-opens java.xml/jdk.xml.internal=ALL-UNNAMED
diff --git a/rap/pom.xml b/rap/pom.xml
index 4479d1aca5..73d0fa0064 100644
--- a/rap/pom.xml
+++ b/rap/pom.xml
@@ -56,11 +56,5 @@
             <version>${project.version}</version>
             <scope>provided</scope>
         </dependency>
-        <dependency>
-            <groupId>org.junit.vintage</groupId>
-            <artifactId>junit-vintage-engine</artifactId>
-            <version>${junit.version}</version>
-            <scope>test</scope>
-        </dependency>
     </dependencies>
 </project>
diff --git a/rcp/pom.xml b/rcp/pom.xml
index 68ad5bcd2e..ab910a9328 100644
--- a/rcp/pom.xml
+++ b/rcp/pom.xml
@@ -54,11 +54,5 @@
             <version>${org.eclipse.platform.version}</version>
             <scope>provided</scope>
         </dependency>
-        <dependency>
-            <groupId>org.junit.vintage</groupId>
-            <artifactId>junit-vintage-engine</artifactId>
-            <version>${junit.version}</version>
-            <scope>test</scope>
-        </dependency>
     </dependencies>
 </project>
diff --git a/ui/pom.xml b/ui/pom.xml
index e03261d42c..d03949386b 100644
--- a/ui/pom.xml
+++ b/ui/pom.xml
@@ -119,12 +119,6 @@
             <classifier>tests</classifier>
             <scope>test</scope>
         </dependency>
-        <dependency>
-            <groupId>org.junit.vintage</groupId>
-            <artifactId>junit-vintage-engine</artifactId>
-            <version>${junit.version}</version>
-            <scope>test</scope>
-        </dependency>
     </dependencies>
 
     <repositories>


Reply via email to