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

FrankChen021 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/druid.git


The following commit(s) were added to refs/heads/master by this push:
     new 268e23b804b test: migrate third extensions-contrib batch to JUnit 5 
(#19916)
268e23b804b is described below

commit 268e23b804b89dc8d1392fb6cd0f735bf28df2a9
Author: Frank Chen <[email protected]>
AuthorDate: Tue Aug 11 17:54:40 2026 +0800

    test: migrate third extensions-contrib batch to JUnit 5 (#19916)
---
 extensions-contrib/cassandra-storage/pom.xml       |   6 -
 extensions-contrib/consul-extensions/pom.xml       |  20 ++-
 .../discovery/ConsulClientsSecurityTest.java       |  46 +++---
 .../discovery/ConsulDiscoveryConfigTest.java       |  67 ++++----
 .../discovery/ConsulDruidNodeAnnouncerTest.java    |  29 ++--
 .../ConsulDruidNodeDiscoveryProviderTest.java      |  24 +--
 .../consul/discovery/ConsulLeaderSelectorTest.java |  38 ++---
 .../consul/discovery/ConsulServiceIdsTest.java     |  10 +-
 .../druid-deltalake-extensions/pom.xml             |  55 ++-----
 .../org/apache/druid/delta/DeltaAssertions.java}   |  26 ++--
 .../druid/delta/filter/DeltaAndFilterTest.java     |  35 ++---
 .../druid/delta/filter/DeltaEqualsFilterTest.java  |  35 ++---
 .../delta/filter/DeltaGreaterThanFilterTest.java   |   8 +-
 .../filter/DeltaGreaterThanOrEqualsFilterTest.java |   8 +-
 .../delta/filter/DeltaLessThanFilterTest.java      |   8 +-
 .../filter/DeltaLessThanOrEqualsFilterTest.java    |  19 +--
 .../druid/delta/filter/DeltaNotFilterTest.java     |  31 ++--
 .../druid/delta/filter/DeltaOrFilterTest.java      |  35 ++---
 .../druid/delta/input/DeltaInputRowTest.java       |  23 ++-
 .../delta/input/DeltaInputSourceSerdeTest.java     |  28 ++--
 .../druid/delta/input/DeltaInputSourceTest.java    | 169 +++++++++++----------
 .../druid/delta/input/DeltaTimeUtilsTest.java      |  16 +-
 .../druid-iceberg-extensions/pom.xml               |  20 ++-
 .../druid/iceberg/filter/IcebergAndFilterTest.java |  12 +-
 .../iceberg/filter/IcebergEqualsFilterTest.java    |   6 +-
 .../iceberg/filter/IcebergIntervalFilterTest.java  |   6 +-
 .../druid/iceberg/filter/IcebergNotFilterTest.java |  10 +-
 .../druid/iceberg/filter/IcebergOrFilterTest.java  |  14 +-
 .../iceberg/filter/IcebergRangeFilterTest.java     |  12 +-
 .../filter/IcebergTimeWindowFilterTest.java        |   6 +-
 .../iceberg/input/GlueIcebergCatalogTest.java      |   8 +-
 .../iceberg/input/HiveIcebergCatalogTest.java      |  10 +-
 .../iceberg/input/IcebergInputSourceTest.java      |  63 ++++----
 .../druid/iceberg/input/LocalCatalogTest.java      |  10 +-
 .../iceberg/input/ResidualFilterModeTest.java      |  26 ++--
 .../druid/iceberg/input/RestCatalogTest.java       |  20 +--
 36 files changed, 461 insertions(+), 498 deletions(-)

diff --git a/extensions-contrib/cassandra-storage/pom.xml 
b/extensions-contrib/cassandra-storage/pom.xml
index f1a93f561da..d32866062a2 100644
--- a/extensions-contrib/cassandra-storage/pom.xml
+++ b/extensions-contrib/cassandra-storage/pom.xml
@@ -166,12 +166,6 @@
             <scope>provided</scope>
         </dependency>
 
-        <!-- Tests -->
-        <dependency>
-            <groupId>junit</groupId>
-            <artifactId>junit</artifactId>
-            <scope>test</scope>
-        </dependency>
     </dependencies>
 
     <build>
diff --git a/extensions-contrib/consul-extensions/pom.xml 
b/extensions-contrib/consul-extensions/pom.xml
index 4dd1764f1da..3fbc60cbd61 100644
--- a/extensions-contrib/consul-extensions/pom.xml
+++ b/extensions-contrib/consul-extensions/pom.xml
@@ -40,6 +40,21 @@
   </properties>
 
   <dependencies>
+    <dependency>
+      <groupId>org.junit.jupiter</groupId>
+      <artifactId>junit-jupiter-api</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.junit.jupiter</groupId>
+      <artifactId>junit-jupiter-params</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.junit.jupiter</groupId>
+      <artifactId>junit-jupiter-engine</artifactId>
+      <scope>test</scope>
+    </dependency>
     <dependency>
       <groupId>org.apache.druid</groupId>
       <artifactId>druid-server</artifactId>
@@ -112,11 +127,6 @@
     </dependency>
 
     <!-- Test dependencies -->
-    <dependency>
-      <groupId>junit</groupId>
-      <artifactId>junit</artifactId>
-      <scope>test</scope>
-    </dependency>
     <dependency>
       <groupId>org.easymock</groupId>
       <artifactId>easymock</artifactId>
diff --git 
a/extensions-contrib/consul-extensions/src/test/java/org/apache/druid/consul/discovery/ConsulClientsSecurityTest.java
 
b/extensions-contrib/consul-extensions/src/test/java/org/apache/druid/consul/discovery/ConsulClientsSecurityTest.java
index d8e79ecc3e6..1a049102b33 100644
--- 
a/extensions-contrib/consul-extensions/src/test/java/org/apache/druid/consul/discovery/ConsulClientsSecurityTest.java
+++ 
b/extensions-contrib/consul-extensions/src/test/java/org/apache/druid/consul/discovery/ConsulClientsSecurityTest.java
@@ -20,8 +20,8 @@
 package org.apache.druid.consul.discovery;
 
 import com.ecwid.consul.v1.ConsulClient;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
 
 /**
  * Tests for Consul client security validation, especially around basic auth 
over HTTP.
@@ -38,22 +38,22 @@ public class ConsulClientsSecurityTest
         // No TLS configured
         .build();
 
-    IllegalStateException exception = Assert.assertThrows(
+    IllegalStateException exception = Assertions.assertThrows(
         IllegalStateException.class,
         () -> ConsulClients.create(config)
     );
 
-    Assert.assertTrue(
-        "Exception should mention TLS not enabled",
-        exception.getMessage().contains("TLS is not enabled")
+    Assertions.assertTrue(
+        exception.getMessage().contains("TLS is not enabled"),
+        "Exception should mention TLS not enabled"
     );
-    Assert.assertTrue(
-        "Exception should mention cleartext transmission",
-        exception.getMessage().contains("cleartext")
+    Assertions.assertTrue(
+        exception.getMessage().contains("cleartext"),
+        "Exception should mention cleartext transmission"
     );
-    Assert.assertTrue(
-        "Exception should mention allowBasicAuthOverHttp flag",
-        exception.getMessage().contains("allowBasicAuthOverHttp")
+    Assertions.assertTrue(
+        exception.getMessage().contains("allowBasicAuthOverHttp"),
+        "Exception should mention allowBasicAuthOverHttp flag"
     );
   }
 
@@ -70,7 +70,7 @@ public class ConsulClientsSecurityTest
 
     // Should not throw with the flag enabled
     ConsulClient client = ConsulClients.create(config);
-    Assert.assertNotNull(client);
+    Assertions.assertNotNull(client);
   }
 
   @Test
@@ -84,14 +84,14 @@ public class ConsulClientsSecurityTest
         // No TLS configured
         .build();
 
-    IllegalStateException exception = Assert.assertThrows(
+    IllegalStateException exception = Assertions.assertThrows(
         IllegalStateException.class,
         () -> ConsulClients.create(config)
     );
 
-    Assert.assertTrue(
-        "Exception should mention TLS not enabled",
-        exception.getMessage().contains("TLS is not enabled")
+    Assertions.assertTrue(
+        exception.getMessage().contains("TLS is not enabled"),
+        "Exception should mention TLS not enabled"
     );
   }
 
@@ -105,7 +105,7 @@ public class ConsulClientsSecurityTest
 
     // Should succeed without basic auth even without TLS
     ConsulClient client = ConsulClients.create(config);
-    Assert.assertNotNull(client);
+    Assertions.assertNotNull(client);
   }
 
   @Test
@@ -119,7 +119,7 @@ public class ConsulClientsSecurityTest
 
     // Should succeed - validation only applies when both user and password 
are set
     ConsulClient client = ConsulClients.create(config);
-    Assert.assertNotNull(client);
+    Assertions.assertNotNull(client);
   }
 
   @Test
@@ -133,7 +133,7 @@ public class ConsulClientsSecurityTest
 
     // Should succeed - validation only applies when both user and password 
are set
     ConsulClient client = ConsulClients.create(config);
-    Assert.assertNotNull(client);
+    Assertions.assertNotNull(client);
   }
 
   @Test
@@ -143,9 +143,9 @@ public class ConsulClientsSecurityTest
         .servicePrefix("druid")
         .build();
 
-    Assert.assertFalse(
-        "allowBasicAuthOverHttp should default to false",
-        config.getAuth().getAllowBasicAuthOverHttp()
+    Assertions.assertFalse(
+        config.getAuth().getAllowBasicAuthOverHttp(),
+        "allowBasicAuthOverHttp should default to false"
     );
   }
 }
diff --git 
a/extensions-contrib/consul-extensions/src/test/java/org/apache/druid/consul/discovery/ConsulDiscoveryConfigTest.java
 
b/extensions-contrib/consul-extensions/src/test/java/org/apache/druid/consul/discovery/ConsulDiscoveryConfigTest.java
index c4c5df5ffb4..92466d10a58 100644
--- 
a/extensions-contrib/consul-extensions/src/test/java/org/apache/druid/consul/discovery/ConsulDiscoveryConfigTest.java
+++ 
b/extensions-contrib/consul-extensions/src/test/java/org/apache/druid/consul/discovery/ConsulDiscoveryConfigTest.java
@@ -22,8 +22,10 @@ package org.apache.druid.consul.discovery;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import org.apache.druid.jackson.DefaultObjectMapper;
 import org.joda.time.Duration;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.assertThrows;
 
 public class ConsulDiscoveryConfigTest
 {
@@ -80,7 +82,7 @@ public class ConsulDiscoveryConfigTest
         + "  \"service\": { \"servicePrefix\": \"druid\" }\n"
         + "}\n"
     );
-    Assert.assertFalse(config.getAuth().getAllowBasicAuthOverHttp());
+    Assertions.assertFalse(config.getAuth().getAllowBasicAuthOverHttp());
   }
 
   @Test
@@ -92,7 +94,7 @@ public class ConsulDiscoveryConfigTest
         + "  \"service\": { \"servicePrefix\": \"druid\" }\n"
         + "}\n"
     );
-    Assert.assertTrue(config.getAuth().getAllowBasicAuthOverHttp());
+    Assertions.assertTrue(config.getAuth().getAllowBasicAuthOverHttp());
   }
 
   @Test
@@ -104,19 +106,21 @@ public class ConsulDiscoveryConfigTest
         + "  \"watch\": { \"maxWatchRetries\": -1 }\n"
         + "}\n"
     );
-    Assert.assertEquals(Long.MAX_VALUE, 
config.getWatch().getMaxWatchRetries());
+    Assertions.assertEquals(Long.MAX_VALUE, 
config.getWatch().getMaxWatchRetries());
   }
 
-  @Test(expected = IllegalArgumentException.class)
+  @Test
   public void testNullServicePrefixThrows()
   {
-    TestUtils.builder().servicePrefix(null).build();
+    assertThrows(IllegalArgumentException.class, () ->
+      TestUtils.builder().servicePrefix(null).build());
   }
 
-  @Test(expected = IllegalArgumentException.class)
+  @Test
   public void testEmptyServicePrefixThrows()
   {
-    TestUtils.builder().servicePrefix("").build();
+    assertThrows(IllegalArgumentException.class, () ->
+      TestUtils.builder().servicePrefix("").build());
   }
 
   @Test
@@ -128,8 +132,8 @@ public class ConsulDiscoveryConfigTest
         + "  \"leader\": { \"leaderMaxErrorRetries\": 5, 
\"leaderRetryBackoffMax\": \"PT30S\" }\n"
         + "}\n"
     );
-    Assert.assertEquals(5L, config.getLeader().getLeaderMaxErrorRetries());
-    Assert.assertEquals(Duration.millis(30000), 
config.getLeader().getLeaderRetryBackoffMax());
+    Assertions.assertEquals(5L, config.getLeader().getLeaderMaxErrorRetries());
+    Assertions.assertEquals(Duration.millis(30000), 
config.getLeader().getLeaderRetryBackoffMax());
   }
 
   @Test
@@ -141,7 +145,7 @@ public class ConsulDiscoveryConfigTest
           .socketTimeout(Duration.millis(5000))
           .watchSeconds(Duration.millis(60000))
           .build();
-      Assert.fail("Expected IllegalArgumentException for socketTimeout <= 
watchSeconds");
+      Assertions.fail("Expected IllegalArgumentException for socketTimeout <= 
watchSeconds");
     }
     catch (IllegalArgumentException expected) {
       // expected
@@ -156,7 +160,7 @@ public class ConsulDiscoveryConfigTest
         .watchSeconds(Duration.millis(60000))
         .build();
 
-    
Assert.assertTrue(config.getConnection().getSocketTimeout().isLongerThan(config.getWatch().getWatchSeconds()));
+    
Assertions.assertTrue(config.getConnection().getSocketTimeout().isLongerThan(config.getWatch().getWatchSeconds()));
   }
 
   @Test
@@ -175,12 +179,12 @@ public class ConsulDiscoveryConfigTest
 
     String toString = config.toString();
 
-    Assert.assertFalse(toString.contains("secret-acl-token"));
-    Assert.assertFalse(toString.contains("password"));
-    Assert.assertFalse(toString.contains("admin"));
-    Assert.assertTrue(toString.contains("*****"));
-    Assert.assertTrue(toString.contains("localhost"));
-    Assert.assertTrue(toString.contains("druid"));
+    Assertions.assertFalse(toString.contains("secret-acl-token"));
+    Assertions.assertFalse(toString.contains("password"));
+    Assertions.assertFalse(toString.contains("admin"));
+    Assertions.assertTrue(toString.contains("*****"));
+    Assertions.assertTrue(toString.contains("localhost"));
+    Assertions.assertTrue(toString.contains("druid"));
   }
 
   @Test
@@ -192,7 +196,7 @@ public class ConsulDiscoveryConfigTest
         .build();
 
     // Default should be max(45s, 3 * healthCheckInterval)
-    Assert.assertEquals(Duration.standardSeconds(45), 
config.getLeader().getLeaderSessionTtl());
+    Assertions.assertEquals(Duration.standardSeconds(45), 
config.getLeader().getLeaderSessionTtl());
   }
 
   @Test
@@ -205,16 +209,17 @@ public class ConsulDiscoveryConfigTest
         + "}\n"
     );
 
-    Assert.assertEquals(Duration.standardSeconds(60), 
config.getLeader().getLeaderSessionTtl());
+    Assertions.assertEquals(Duration.standardSeconds(60), 
config.getLeader().getLeaderSessionTtl());
   }
 
-  @Test(expected = IllegalArgumentException.class)
+  @Test
   public void testLeaderSessionTtlTooLow()
   {
-    TestUtils.builder()
-        .servicePrefix("druid")
-        .leaderSessionTtl(Duration.standardSeconds(5))
-        .build();
+    assertThrows(IllegalArgumentException.class, () ->
+      TestUtils.builder()
+          .servicePrefix("druid")
+          .leaderSessionTtl(Duration.standardSeconds(5))
+          .build());
   }
 
   @Test
@@ -238,7 +243,7 @@ public class ConsulDiscoveryConfigTest
         .build();
 
     // Should be 3 * healthCheckInterval = 60s (greater than minimum 45s)
-    Assert.assertEquals(Duration.standardSeconds(60), 
config.getLeader().getLeaderSessionTtl());
+    Assertions.assertEquals(Duration.standardSeconds(60), 
config.getLeader().getLeaderSessionTtl());
   }
 
   @Test
@@ -258,11 +263,11 @@ public class ConsulDiscoveryConfigTest
     // Original map modifications should not affect stored map
     originalTags.put("key1", "mutated");
 
-    Assert.assertEquals("value1", serviceConfig.getServiceTags().get("key1"));
+    Assertions.assertEquals("value1", 
serviceConfig.getServiceTags().get("key1"));
 
     try {
       serviceConfig.getServiceTags().put("key2", "value2");
-      Assert.fail("Expected UnsupportedOperationException when mutating 
serviceTags");
+      Assertions.fail("Expected UnsupportedOperationException when mutating 
serviceTags");
     }
     catch (UnsupportedOperationException expected) {
       // expected
@@ -276,7 +281,7 @@ public class ConsulDiscoveryConfigTest
         jsonMapper.writeValueAsString(config),
         ConsulDiscoveryConfig.class
     );
-    Assert.assertEquals(config, roundTrip);
+    Assertions.assertEquals(config, roundTrip);
   }
 
   private ConsulDiscoveryConfig testSerdeAndReturn(String jsonStr) throws 
Exception
@@ -286,7 +291,7 @@ public class ConsulDiscoveryConfigTest
         jsonMapper.writeValueAsString(config),
         ConsulDiscoveryConfig.class
     );
-    Assert.assertEquals(config, roundTrip);
+    Assertions.assertEquals(config, roundTrip);
     return config;
   }
 }
diff --git 
a/extensions-contrib/consul-extensions/src/test/java/org/apache/druid/consul/discovery/ConsulDruidNodeAnnouncerTest.java
 
b/extensions-contrib/consul-extensions/src/test/java/org/apache/druid/consul/discovery/ConsulDruidNodeAnnouncerTest.java
index 65c4dcdb085..506b6c4da2a 100644
--- 
a/extensions-contrib/consul-extensions/src/test/java/org/apache/druid/consul/discovery/ConsulDruidNodeAnnouncerTest.java
+++ 
b/extensions-contrib/consul-extensions/src/test/java/org/apache/druid/consul/discovery/ConsulDruidNodeAnnouncerTest.java
@@ -26,17 +26,14 @@ import org.apache.http.NoHttpResponseException;
 import org.easymock.Capture;
 import org.easymock.EasyMock;
 import org.joda.time.Duration;
-import org.junit.After;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.JUnit4;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
 import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.TimeUnit;
 
-@RunWith(JUnit4.class)
 public class ConsulDruidNodeAnnouncerTest
 {
   private final DiscoveryDruidNode testNode = new DiscoveryDruidNode(
@@ -56,13 +53,13 @@ public class ConsulDruidNodeAnnouncerTest
   private ConsulApiClient mockConsulApiClient;
   private ConsulDruidNodeAnnouncer announcer;
 
-  @Before
+  @BeforeEach
   public void setUp()
   {
     mockConsulApiClient = EasyMock.createMock(ConsulApiClient.class);
   }
 
-  @After
+  @AfterEach
   public void tearDown()
   {
     // Don't call stop() here - each test will handle its own lifecycle
@@ -88,7 +85,7 @@ public class ConsulDruidNodeAnnouncerTest
     announcer = new ConsulDruidNodeAnnouncer(mockConsulApiClient, config);
     announcer.start();
     announcer.announce(testNode);
-    Assert.assertEquals(testNode, nodeCapture.getValue());
+    Assertions.assertEquals(testNode, nodeCapture.getValue());
 
     // Explicitly stop to trigger cleanup
     announcer.stop();
@@ -149,7 +146,7 @@ public class ConsulDruidNodeAnnouncerTest
 
     // Verify service ID format
     String expectedServiceId = "druid-broker-test-host-8082";
-    Assert.assertEquals(expectedServiceId, deregisterCapture.getValue());
+    Assertions.assertEquals(expectedServiceId, deregisterCapture.getValue());
   }
 
   @Test
@@ -173,10 +170,10 @@ public class ConsulDruidNodeAnnouncerTest
 
     try {
       announcer.announce(testNode);
-      Assert.fail("Expected RuntimeException");
+      Assertions.fail("Expected RuntimeException");
     }
     catch (RuntimeException e) {
-      Assert.assertTrue(e.getMessage().contains("Failed to announce"));
+      Assertions.assertTrue(e.getMessage().contains("Failed to announce"));
     }
 
     // Don't need to stop since no nodes were announced
@@ -238,10 +235,10 @@ public class ConsulDruidNodeAnnouncerTest
 
     try {
       announcer.announce(testNode);
-      Assert.fail("Expected failure on first announce");
+      Assertions.fail("Expected failure on first announce");
     }
     catch (RuntimeException expected) {
-      Assert.assertTrue(expected.getMessage().contains("Failed to announce"));
+      Assertions.assertTrue(expected.getMessage().contains("Failed to 
announce"));
     }
 
     announcer.announce(testNode); // succeeds
@@ -285,7 +282,7 @@ public class ConsulDruidNodeAnnouncerTest
     t1.start();
     t2.start();
 
-    Assert.assertTrue("Announce tasks did not finish", latch.await(5, 
TimeUnit.SECONDS));
+    Assertions.assertTrue(latch.await(5, TimeUnit.SECONDS), "Announce tasks 
did not finish");
 
     announcer.stop();
 
diff --git 
a/extensions-contrib/consul-extensions/src/test/java/org/apache/druid/consul/discovery/ConsulDruidNodeDiscoveryProviderTest.java
 
b/extensions-contrib/consul-extensions/src/test/java/org/apache/druid/consul/discovery/ConsulDruidNodeDiscoveryProviderTest.java
index 9520d29fded..a648bbd8980 100644
--- 
a/extensions-contrib/consul-extensions/src/test/java/org/apache/druid/consul/discovery/ConsulDruidNodeDiscoveryProviderTest.java
+++ 
b/extensions-contrib/consul-extensions/src/test/java/org/apache/druid/consul/discovery/ConsulDruidNodeDiscoveryProviderTest.java
@@ -26,10 +26,10 @@ import org.apache.druid.discovery.NodeRole;
 import org.apache.druid.server.DruidNode;
 import org.easymock.EasyMock;
 import org.joda.time.Duration;
-import org.junit.After;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
 import java.util.Collection;
 import java.util.List;
@@ -61,14 +61,14 @@ public class ConsulDruidNodeDiscoveryProviderTest
   private ConsulApiClient mockConsulApiClient;
   private ConsulDruidNodeDiscoveryProvider provider;
 
-  @Before
+  @BeforeEach
   public void setUp()
   {
     mockConsulApiClient = EasyMock.createMock(ConsulApiClient.class);
     provider = new ConsulDruidNodeDiscoveryProvider(mockConsulApiClient, 
config);
   }
 
-  @After
+  @AfterEach
   public void tearDown()
   {
     if (provider != null) {
@@ -90,7 +90,7 @@ public class ConsulDruidNodeDiscoveryProviderTest
     provider.start();
 
     boolean found = provider.getForNode(node1.getDruidNode(), 
NodeRole.BROKER).getAsBoolean();
-    Assert.assertTrue(found);
+    Assertions.assertTrue(found);
 
     EasyMock.verify(mockConsulApiClient);
   }
@@ -127,14 +127,14 @@ public class ConsulDruidNodeDiscoveryProviderTest
     provider.start();
 
     DruidNodeDiscovery discovery = provider.getForNodeRole(NodeRole.BROKER);
-    Assert.assertNotNull(discovery);
+    Assertions.assertNotNull(discovery);
 
     // Wait a bit for cache to initialize
     Thread.sleep(500);
 
     Collection<DiscoveryDruidNode> nodes = discovery.getAllNodes();
-    Assert.assertEquals(1, nodes.size());
-    Assert.assertTrue(nodes.contains(node1));
+    Assertions.assertEquals(1, nodes.size());
+    Assertions.assertTrue(nodes.contains(node1));
 
     EasyMock.verify(mockConsulApiClient);
   }
@@ -208,8 +208,8 @@ public class ConsulDruidNodeDiscoveryProviderTest
       }
     });
 
-    Assert.assertTrue("Initialization timed out", initLatch.await(5, 
TimeUnit.SECONDS));
-    Assert.assertTrue("Node addition not detected", addedLatch.await(5, 
TimeUnit.SECONDS));
+    Assertions.assertTrue(initLatch.await(5, TimeUnit.SECONDS), 
"Initialization timed out");
+    Assertions.assertTrue(addedLatch.await(5, TimeUnit.SECONDS), "Node 
addition not detected");
 
     EasyMock.verify(mockConsulApiClient);
   }
diff --git 
a/extensions-contrib/consul-extensions/src/test/java/org/apache/druid/consul/discovery/ConsulLeaderSelectorTest.java
 
b/extensions-contrib/consul-extensions/src/test/java/org/apache/druid/consul/discovery/ConsulLeaderSelectorTest.java
index abc2cb73159..4fffc916eef 100644
--- 
a/extensions-contrib/consul-extensions/src/test/java/org/apache/druid/consul/discovery/ConsulLeaderSelectorTest.java
+++ 
b/extensions-contrib/consul-extensions/src/test/java/org/apache/druid/consul/discovery/ConsulLeaderSelectorTest.java
@@ -30,10 +30,10 @@ import org.apache.druid.discovery.DruidLeaderSelector;
 import org.apache.druid.server.DruidNode;
 import org.easymock.Capture;
 import org.easymock.EasyMock;
-import org.junit.After;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
 import java.nio.charset.StandardCharsets;
 import java.util.Base64;
@@ -51,7 +51,7 @@ public class ConsulLeaderSelectorTest
   private ConsulDiscoveryConfig testConfig;
   private DruidNode selfNode;
 
-  @Before
+  @BeforeEach
   public void setUp()
   {
     selfNode = new DruidNode(
@@ -70,7 +70,7 @@ public class ConsulLeaderSelectorTest
     leaderSelector = new ConsulLeaderSelector(selfNode, LOCK_KEY, testConfig, 
mockConsulClient);
   }
 
-  @After
+  @AfterEach
   public void tearDown()
   {
     // Only unregister if we actually registered a listener
@@ -96,7 +96,7 @@ public class ConsulLeaderSelectorTest
     EasyMock.replay(mockConsulClient);
 
     String currentLeader = leaderSelector.getCurrentLeader();
-    Assert.assertEquals(leaderValue, currentLeader);
+    Assertions.assertEquals(leaderValue, currentLeader);
 
     EasyMock.verify(mockConsulClient);
   }
@@ -117,7 +117,7 @@ public class ConsulLeaderSelectorTest
     EasyMock.replay(mockConsulClient);
 
     String currentLeader = leaderSelector.getCurrentLeader();
-    Assert.assertNull(currentLeader);
+    Assertions.assertNull(currentLeader);
 
     EasyMock.verify(mockConsulClient);
   }
@@ -125,13 +125,13 @@ public class ConsulLeaderSelectorTest
   @Test
   public void testIsLeaderInitiallyFalse()
   {
-    Assert.assertFalse(leaderSelector.isLeader());
+    Assertions.assertFalse(leaderSelector.isLeader());
   }
 
   @Test
   public void testLocalTermInitiallyZero()
   {
-    Assert.assertEquals(0, leaderSelector.localTerm());
+    Assertions.assertEquals(0, leaderSelector.localTerm());
   }
 
   @Test
@@ -200,22 +200,22 @@ public class ConsulLeaderSelectorTest
     leaderSelector.registerListener(listener);
 
     // Wait for session creation and leader election
-    Assert.assertTrue("Session not created", sessionCreatedLatch.await(5, 
TimeUnit.SECONDS));
-    Assert.assertTrue("Did not become leader", becameLeaderLatch.await(5, 
TimeUnit.SECONDS));
+    Assertions.assertTrue(sessionCreatedLatch.await(5, TimeUnit.SECONDS), 
"Session not created");
+    Assertions.assertTrue(becameLeaderLatch.await(5, TimeUnit.SECONDS), "Did 
not become leader");
 
     // Verify we became leader
-    Assert.assertTrue(leaderSelector.isLeader());
-    Assert.assertEquals(1, leaderSelector.localTerm());
+    Assertions.assertTrue(leaderSelector.isLeader());
+    Assertions.assertEquals(1, leaderSelector.localTerm());
 
     // Verify session was created correctly
     NewSession createdSession = sessionCapture.getValue();
-    Assert.assertNotNull(createdSession);
-    Assert.assertEquals(Session.Behavior.DELETE, createdSession.getBehavior());
-    Assert.assertEquals(5L, createdSession.getLockDelay());
+    Assertions.assertNotNull(createdSession);
+    Assertions.assertEquals(Session.Behavior.DELETE, 
createdSession.getBehavior());
+    Assertions.assertEquals(5L, createdSession.getLockDelay());
 
     // Verify lock acquisition used the session
     PutParams putParams = putParamsCapture.getValue();
-    Assert.assertEquals(SESSION_ID, putParams.getAcquireSession());
+    Assertions.assertEquals(SESSION_ID, putParams.getAcquireSession());
 
     EasyMock.verify(mockConsulClient);
   }
@@ -293,7 +293,7 @@ public class ConsulLeaderSelectorTest
     leaderSelector.unregisterListener();
 
     // Verify session was destroyed
-    Assert.assertEquals(SESSION_ID, sessionIdCapture.getValue());
+    Assertions.assertEquals(SESSION_ID, sessionIdCapture.getValue());
 
     EasyMock.verify(mockConsulClient);
   }
diff --git 
a/extensions-contrib/consul-extensions/src/test/java/org/apache/druid/consul/discovery/ConsulServiceIdsTest.java
 
b/extensions-contrib/consul-extensions/src/test/java/org/apache/druid/consul/discovery/ConsulServiceIdsTest.java
index b11c5c2e15c..aa41963f994 100644
--- 
a/extensions-contrib/consul-extensions/src/test/java/org/apache/druid/consul/discovery/ConsulServiceIdsTest.java
+++ 
b/extensions-contrib/consul-extensions/src/test/java/org/apache/druid/consul/discovery/ConsulServiceIdsTest.java
@@ -23,8 +23,8 @@ import org.apache.druid.discovery.DiscoveryDruidNode;
 import org.apache.druid.discovery.NodeRole;
 import org.apache.druid.server.DruidNode;
 import org.joda.time.Duration;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
 
 public class ConsulServiceIdsTest
 {
@@ -49,15 +49,15 @@ public class ConsulServiceIdsTest
 
     NodeRole role = NodeRole.PEON;
     String serviceName = ConsulServiceIds.serviceName(config, role);
-    Assert.assertEquals("druid-peon", serviceName);
+    Assertions.assertEquals("druid-peon", serviceName);
 
     DruidNode druidNode = new DruidNode("service", "host", false, 8080, null, 
true, false);
     DiscoveryDruidNode discoveryNode = new DiscoveryDruidNode(druidNode, role, 
null);
 
     String serviceId = ConsulServiceIds.serviceId(config, discoveryNode);
-    Assert.assertEquals("druid-peon-host-8080", serviceId);
+    Assertions.assertEquals("druid-peon-host-8080", serviceId);
 
     String kvKey = ConsulServiceIds.nodeKvKey(config, serviceId);
-    Assert.assertEquals("druid/nodes/druid-peon-host-8080", kvKey);
+    Assertions.assertEquals("druid/nodes/druid-peon-host-8080", kvKey);
   }
 }
diff --git a/extensions-contrib/druid-deltalake-extensions/pom.xml 
b/extensions-contrib/druid-deltalake-extensions/pom.xml
index ff0b89412d2..3149728adfb 100644
--- a/extensions-contrib/druid-deltalake-extensions/pom.xml
+++ b/extensions-contrib/druid-deltalake-extensions/pom.xml
@@ -39,6 +39,21 @@
   </properties>
 
   <dependencies>
+    <dependency>
+      <groupId>org.junit.jupiter</groupId>
+      <artifactId>junit-jupiter-api</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.junit.jupiter</groupId>
+      <artifactId>junit-jupiter-params</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.junit.jupiter</groupId>
+      <artifactId>junit-jupiter-engine</artifactId>
+      <scope>test</scope>
+    </dependency>
     <dependency>
       <groupId>io.delta</groupId>
       <artifactId>delta-kernel-api</artifactId>
@@ -118,36 +133,6 @@
     </dependency>
 
     <!-- Test dependencies -->
-    <dependency>
-      <groupId>junit</groupId>
-      <artifactId>junit</artifactId>
-      <scope>test</scope>
-    </dependency>
-    <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-migrationsupport</artifactId>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.junit.jupiter</groupId>
-      <artifactId>junit-jupiter-params</artifactId>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.junit.vintage</groupId>
-      <artifactId>junit-vintage-engine</artifactId>
-      <scope>test</scope>
-    </dependency>
     <dependency>
       <groupId>org.apache.druid</groupId>
       <artifactId>druid-processing</artifactId>
@@ -155,16 +140,6 @@
       <type>test-jar</type>
       <scope>test</scope>
     </dependency>
-    <dependency>
-      <groupId>org.hamcrest</groupId>
-      <artifactId>hamcrest</artifactId>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.hamcrest</groupId>
-      <artifactId>hamcrest-core</artifactId>
-      <scope>test</scope>
-    </dependency>
   </dependencies>
 
   <build>
diff --git 
a/extensions-contrib/druid-iceberg-extensions/src/test/java/org/apache/druid/iceberg/filter/IcebergEqualsFilterTest.java
 
b/extensions-contrib/druid-deltalake-extensions/src/test/java/org/apache/druid/delta/DeltaAssertions.java
similarity index 54%
copy from 
extensions-contrib/druid-iceberg-extensions/src/test/java/org/apache/druid/iceberg/filter/IcebergEqualsFilterTest.java
copy to 
extensions-contrib/druid-deltalake-extensions/src/test/java/org/apache/druid/delta/DeltaAssertions.java
index c021a16e865..0c9f81f7708 100644
--- 
a/extensions-contrib/druid-iceberg-extensions/src/test/java/org/apache/druid/iceberg/filter/IcebergEqualsFilterTest.java
+++ 
b/extensions-contrib/druid-deltalake-extensions/src/test/java/org/apache/druid/delta/DeltaAssertions.java
@@ -17,20 +17,24 @@
  * under the License.
  */
 
-package org.apache.druid.iceberg.filter;
+package org.apache.druid.delta;
 
-import org.apache.iceberg.expressions.Expression;
-import org.apache.iceberg.expressions.Expressions;
-import org.junit.Assert;
-import org.junit.Test;
+import org.apache.druid.error.DruidException;
+import org.junit.jupiter.api.Assertions;
 
-public class IcebergEqualsFilterTest
+public class DeltaAssertions
 {
-  @Test
-  public void testFilter()
+  private DeltaAssertions()
   {
-    IcebergEqualsFilter testFilter = new IcebergEqualsFilter("column1", 
"value1");
-    Expression expectedExpression = Expressions.equal("column1", "value1");
-    Assert.assertEquals(expectedExpression.toString(), 
testFilter.getFilterExpression().toString());
+  }
+
+  public static void assertInvalidInput(final DruidException exception, final 
String expectedMessage)
+  {
+    Assertions.assertAll(
+        () -> Assertions.assertEquals(DruidException.Persona.USER, 
exception.getTargetPersona()),
+        () -> Assertions.assertEquals(DruidException.Category.INVALID_INPUT, 
exception.getCategory()),
+        () -> Assertions.assertEquals("invalidInput", 
exception.getErrorCode()),
+        () -> Assertions.assertEquals(expectedMessage, exception.getMessage())
+    );
   }
 }
diff --git 
a/extensions-contrib/druid-deltalake-extensions/src/test/java/org/apache/druid/delta/filter/DeltaAndFilterTest.java
 
b/extensions-contrib/druid-deltalake-extensions/src/test/java/org/apache/druid/delta/filter/DeltaAndFilterTest.java
index 946a832f078..fcf27e1909f 100644
--- 
a/extensions-contrib/druid-deltalake-extensions/src/test/java/org/apache/druid/delta/filter/DeltaAndFilterTest.java
+++ 
b/extensions-contrib/druid-deltalake-extensions/src/test/java/org/apache/druid/delta/filter/DeltaAndFilterTest.java
@@ -25,12 +25,11 @@ import io.delta.kernel.types.LongType;
 import io.delta.kernel.types.StringType;
 import io.delta.kernel.types.StructField;
 import io.delta.kernel.types.StructType;
+import org.apache.druid.delta.DeltaAssertions;
 import org.apache.druid.error.DruidException;
-import org.apache.druid.error.DruidExceptionMatcher;
 import org.apache.druid.java.util.common.StringUtils;
-import org.hamcrest.MatcherAssert;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
 
 import java.util.Arrays;
 import java.util.Collections;
@@ -54,8 +53,8 @@ public class DeltaAndFilterTest
 
     Predicate predicate = andFilter.getFilterPredicate(SCHEMA);
 
-    Assert.assertTrue(predicate instanceof And);
-    Assert.assertEquals(2, predicate.getChildren().size());
+    Assertions.assertTrue(predicate instanceof And);
+    Assertions.assertEquals(2, predicate.getChildren().size());
   }
 
   @Test
@@ -68,33 +67,29 @@ public class DeltaAndFilterTest
         )
     );
 
-    MatcherAssert.assertThat(
-        Assert.assertThrows(DruidException.class, () -> 
andFilter.getFilterPredicate(SCHEMA)),
-        DruidExceptionMatcher.invalidInput().expectMessageIs(
-            StringUtils.format("column[name2] doesn't exist in schema[%s]", 
SCHEMA)
-        )
+    DeltaAssertions.assertInvalidInput(
+        Assertions.assertThrows(DruidException.class, () -> 
andFilter.getFilterPredicate(SCHEMA)),
+        StringUtils.format("column[name2] doesn't exist in schema[%s]", SCHEMA)
     );
   }
 
   @Test
   public void testAndFilterWithNoFilterPredicates()
   {
-    MatcherAssert.assertThat(
-        Assert.assertThrows(
+    DeltaAssertions.assertInvalidInput(
+        Assertions.assertThrows(
             DruidException.class,
             () -> new DeltaAndFilter(null)
         ),
-        DruidExceptionMatcher.invalidInput().expectMessageIs(
-            "Delta and filter requires 2 filter predicates and must be 
non-empty. None provided."
-        )
+        "Delta and filter requires 2 filter predicates and must be non-empty. 
None provided."
     );
   }
 
   @Test
   public void testAndFilterWithOneFilterPredicate()
   {
-    MatcherAssert.assertThat(
-        Assert.assertThrows(
+    DeltaAssertions.assertInvalidInput(
+        Assertions.assertThrows(
             DruidException.class,
             () -> new DeltaAndFilter(
                 Collections.singletonList(
@@ -102,9 +97,7 @@ public class DeltaAndFilterTest
                 )
             )
         ),
-        DruidExceptionMatcher.invalidInput().expectMessageIs(
-            "Delta and filter requires 2 filter predicates, but provided [1]."
-        )
+        "Delta and filter requires 2 filter predicates, but provided [1]."
     );
   }
 }
diff --git 
a/extensions-contrib/druid-deltalake-extensions/src/test/java/org/apache/druid/delta/filter/DeltaEqualsFilterTest.java
 
b/extensions-contrib/druid-deltalake-extensions/src/test/java/org/apache/druid/delta/filter/DeltaEqualsFilterTest.java
index 26761b73da5..b5a7eb38e18 100644
--- 
a/extensions-contrib/druid-deltalake-extensions/src/test/java/org/apache/druid/delta/filter/DeltaEqualsFilterTest.java
+++ 
b/extensions-contrib/druid-deltalake-extensions/src/test/java/org/apache/druid/delta/filter/DeltaEqualsFilterTest.java
@@ -29,11 +29,10 @@ import io.delta.kernel.types.ShortType;
 import io.delta.kernel.types.StringType;
 import io.delta.kernel.types.StructField;
 import io.delta.kernel.types.StructType;
+import org.apache.druid.delta.DeltaAssertions;
 import org.apache.druid.error.DruidException;
-import org.apache.druid.error.DruidExceptionMatcher;
-import org.hamcrest.MatcherAssert;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
 
 public class DeltaEqualsFilterTest
 {
@@ -53,35 +52,31 @@ public class DeltaEqualsFilterTest
 
     Predicate predicate = eqFilter.getFilterPredicate(SCHEMA);
 
-    Assert.assertEquals("=", predicate.getName());
-    Assert.assertEquals(2, predicate.getChildren().size());
+    Assertions.assertEquals("=", predicate.getName());
+    Assertions.assertEquals(2, predicate.getChildren().size());
   }
 
   @Test
   public void testFilterWithNullColumn()
   {
-    MatcherAssert.assertThat(
-        Assert.assertThrows(
+    DeltaAssertions.assertInvalidInput(
+        Assertions.assertThrows(
             DruidException.class,
             () -> new DeltaEqualsFilter(null, "Employee1")
         ),
-        DruidExceptionMatcher.invalidInput().expectMessageIs(
-            "column is a required field for = filter."
-        )
+        "column is a required field for = filter."
     );
   }
 
   @Test
   public void testFilterWithNullValue()
   {
-    MatcherAssert.assertThat(
-        Assert.assertThrows(
+    DeltaAssertions.assertInvalidInput(
+        Assertions.assertThrows(
             DruidException.class,
             () -> new DeltaEqualsFilter("str_col", null)
         ),
-        DruidExceptionMatcher.invalidInput().expectMessageIs(
-            "value is a required field for = filter. None provided for 
column[str_col]."
-        )
+        "value is a required field for = filter. None provided for 
column[str_col]."
     );
   }
 
@@ -90,14 +85,12 @@ public class DeltaEqualsFilterTest
   {
     DeltaEqualsFilter eqFilter = new DeltaEqualsFilter("long_col", 
"twentyOne");
 
-    MatcherAssert.assertThat(
-        Assert.assertThrows(
+    DeltaAssertions.assertInvalidInput(
+        Assertions.assertThrows(
             DruidException.class,
             () -> eqFilter.getFilterPredicate(SCHEMA)
         ),
-        DruidExceptionMatcher.invalidInput().expectMessageIs(
-            "column[long_col] has an invalid value[twentyOne]. The value must 
be a number, as the column's data type is [long]."
-        )
+        "column[long_col] has an invalid value[twentyOne]. The value must be a 
number, as the column's data type is [long]."
     );
   }
 }
diff --git 
a/extensions-contrib/druid-deltalake-extensions/src/test/java/org/apache/druid/delta/filter/DeltaGreaterThanFilterTest.java
 
b/extensions-contrib/druid-deltalake-extensions/src/test/java/org/apache/druid/delta/filter/DeltaGreaterThanFilterTest.java
index 53bf42a7e71..4814fe6c780 100644
--- 
a/extensions-contrib/druid-deltalake-extensions/src/test/java/org/apache/druid/delta/filter/DeltaGreaterThanFilterTest.java
+++ 
b/extensions-contrib/druid-deltalake-extensions/src/test/java/org/apache/druid/delta/filter/DeltaGreaterThanFilterTest.java
@@ -29,8 +29,8 @@ import io.delta.kernel.types.ShortType;
 import io.delta.kernel.types.StringType;
 import io.delta.kernel.types.StructField;
 import io.delta.kernel.types.StructType;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
 
 public class DeltaGreaterThanFilterTest
 {
@@ -50,7 +50,7 @@ public class DeltaGreaterThanFilterTest
 
     Predicate predicate = gtFilter.getFilterPredicate(SCHEMA);
 
-    Assert.assertEquals(">", predicate.getName());
-    Assert.assertEquals(2, predicate.getChildren().size());
+    Assertions.assertEquals(">", predicate.getName());
+    Assertions.assertEquals(2, predicate.getChildren().size());
   }
 }
diff --git 
a/extensions-contrib/druid-deltalake-extensions/src/test/java/org/apache/druid/delta/filter/DeltaGreaterThanOrEqualsFilterTest.java
 
b/extensions-contrib/druid-deltalake-extensions/src/test/java/org/apache/druid/delta/filter/DeltaGreaterThanOrEqualsFilterTest.java
index cf9fdf9c8bc..308b228a1f5 100644
--- 
a/extensions-contrib/druid-deltalake-extensions/src/test/java/org/apache/druid/delta/filter/DeltaGreaterThanOrEqualsFilterTest.java
+++ 
b/extensions-contrib/druid-deltalake-extensions/src/test/java/org/apache/druid/delta/filter/DeltaGreaterThanOrEqualsFilterTest.java
@@ -29,8 +29,8 @@ import io.delta.kernel.types.ShortType;
 import io.delta.kernel.types.StringType;
 import io.delta.kernel.types.StructField;
 import io.delta.kernel.types.StructType;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
 
 public class DeltaGreaterThanOrEqualsFilterTest
 {
@@ -51,7 +51,7 @@ public class DeltaGreaterThanOrEqualsFilterTest
 
     Predicate predicate = gteFilter.getFilterPredicate(SCHEMA);
 
-    Assert.assertEquals(">=", predicate.getName());
-    Assert.assertEquals(2, predicate.getChildren().size());
+    Assertions.assertEquals(">=", predicate.getName());
+    Assertions.assertEquals(2, predicate.getChildren().size());
   }
 }
diff --git 
a/extensions-contrib/druid-deltalake-extensions/src/test/java/org/apache/druid/delta/filter/DeltaLessThanFilterTest.java
 
b/extensions-contrib/druid-deltalake-extensions/src/test/java/org/apache/druid/delta/filter/DeltaLessThanFilterTest.java
index 2d716214e61..6f6cf11a4c7 100644
--- 
a/extensions-contrib/druid-deltalake-extensions/src/test/java/org/apache/druid/delta/filter/DeltaLessThanFilterTest.java
+++ 
b/extensions-contrib/druid-deltalake-extensions/src/test/java/org/apache/druid/delta/filter/DeltaLessThanFilterTest.java
@@ -29,8 +29,8 @@ import io.delta.kernel.types.ShortType;
 import io.delta.kernel.types.StringType;
 import io.delta.kernel.types.StructField;
 import io.delta.kernel.types.StructType;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
 
 public class DeltaLessThanFilterTest
 {
@@ -50,7 +50,7 @@ public class DeltaLessThanFilterTest
 
     Predicate predicate = ltFilter.getFilterPredicate(SCHEMA);
 
-    Assert.assertEquals("<", predicate.getName());
-    Assert.assertEquals(2, predicate.getChildren().size());
+    Assertions.assertEquals("<", predicate.getName());
+    Assertions.assertEquals(2, predicate.getChildren().size());
   }
 }
diff --git 
a/extensions-contrib/druid-deltalake-extensions/src/test/java/org/apache/druid/delta/filter/DeltaLessThanOrEqualsFilterTest.java
 
b/extensions-contrib/druid-deltalake-extensions/src/test/java/org/apache/druid/delta/filter/DeltaLessThanOrEqualsFilterTest.java
index a526c57e389..288b35704ec 100644
--- 
a/extensions-contrib/druid-deltalake-extensions/src/test/java/org/apache/druid/delta/filter/DeltaLessThanOrEqualsFilterTest.java
+++ 
b/extensions-contrib/druid-deltalake-extensions/src/test/java/org/apache/druid/delta/filter/DeltaLessThanOrEqualsFilterTest.java
@@ -29,11 +29,10 @@ import io.delta.kernel.types.ShortType;
 import io.delta.kernel.types.StringType;
 import io.delta.kernel.types.StructField;
 import io.delta.kernel.types.StructType;
+import org.apache.druid.delta.DeltaAssertions;
 import org.apache.druid.error.DruidException;
-import org.apache.druid.error.DruidExceptionMatcher;
-import org.hamcrest.MatcherAssert;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
 
 public class DeltaLessThanOrEqualsFilterTest
 {
@@ -53,8 +52,8 @@ public class DeltaLessThanOrEqualsFilterTest
 
     Predicate predicate = lteFilter.getFilterPredicate(SCHEMA);
 
-    Assert.assertEquals("<=", predicate.getName());
-    Assert.assertEquals(2, predicate.getChildren().size());
+    Assertions.assertEquals("<=", predicate.getName());
+    Assertions.assertEquals(2, predicate.getChildren().size());
   }
 
   @Test
@@ -62,14 +61,12 @@ public class DeltaLessThanOrEqualsFilterTest
   {
     DeltaLessThanOrEqualsFilter lteFilter = new 
DeltaLessThanOrEqualsFilter("long_col", "twentyOne");
 
-    MatcherAssert.assertThat(
-        Assert.assertThrows(
+    DeltaAssertions.assertInvalidInput(
+        Assertions.assertThrows(
             DruidException.class,
             () -> lteFilter.getFilterPredicate(SCHEMA)
         ),
-        DruidExceptionMatcher.invalidInput().expectMessageIs(
-            "column[long_col] has an invalid value[twentyOne]. The value must 
be a number, as the column's data type is [long]."
-        )
+        "column[long_col] has an invalid value[twentyOne]. The value must be a 
number, as the column's data type is [long]."
     );
   }
 }
diff --git 
a/extensions-contrib/druid-deltalake-extensions/src/test/java/org/apache/druid/delta/filter/DeltaNotFilterTest.java
 
b/extensions-contrib/druid-deltalake-extensions/src/test/java/org/apache/druid/delta/filter/DeltaNotFilterTest.java
index dae3d37d252..4325fd347c3 100644
--- 
a/extensions-contrib/druid-deltalake-extensions/src/test/java/org/apache/druid/delta/filter/DeltaNotFilterTest.java
+++ 
b/extensions-contrib/druid-deltalake-extensions/src/test/java/org/apache/druid/delta/filter/DeltaNotFilterTest.java
@@ -24,12 +24,11 @@ import io.delta.kernel.types.LongType;
 import io.delta.kernel.types.StringType;
 import io.delta.kernel.types.StructField;
 import io.delta.kernel.types.StructType;
+import org.apache.druid.delta.DeltaAssertions;
 import org.apache.druid.error.DruidException;
-import org.apache.druid.error.DruidExceptionMatcher;
 import org.apache.druid.java.util.common.StringUtils;
-import org.hamcrest.MatcherAssert;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
 
 import java.util.Arrays;
 
@@ -51,8 +50,8 @@ public class DeltaNotFilterTest
 
     Predicate predicate = notFilter.getFilterPredicate(SCHEMA);
 
-    Assert.assertEquals(predicate.getName(), "NOT");
-    Assert.assertEquals(1, predicate.getChildren().size());
+    Assertions.assertEquals(predicate.getName(), "NOT");
+    Assertions.assertEquals(1, predicate.getChildren().size());
   }
 
   @Test
@@ -74,8 +73,8 @@ public class DeltaNotFilterTest
 
     Predicate predicate = notFilter.getFilterPredicate(SCHEMA);
 
-    Assert.assertEquals(predicate.getName(), "NOT");
-    Assert.assertEquals(1, predicate.getChildren().size());
+    Assertions.assertEquals(predicate.getName(), "NOT");
+    Assertions.assertEquals(1, predicate.getChildren().size());
   }
 
   @Test
@@ -87,25 +86,21 @@ public class DeltaNotFilterTest
     );
     DeltaNotFilter notFilter = new DeltaNotFilter(equalsFilter);
 
-    MatcherAssert.assertThat(
-        Assert.assertThrows(DruidException.class, () -> 
notFilter.getFilterPredicate(SCHEMA)),
-        DruidExceptionMatcher.invalidInput().expectMessageIs(
-            StringUtils.format("column[name2] doesn't exist in schema[%s]", 
SCHEMA)
-        )
+    DeltaAssertions.assertInvalidInput(
+        Assertions.assertThrows(DruidException.class, () -> 
notFilter.getFilterPredicate(SCHEMA)),
+        StringUtils.format("column[name2] doesn't exist in schema[%s]", SCHEMA)
     );
   }
 
   @Test
   public void testNotFilterWithNoFilterPredicates()
   {
-    MatcherAssert.assertThat(
-        Assert.assertThrows(
+    DeltaAssertions.assertInvalidInput(
+        Assertions.assertThrows(
             DruidException.class,
             () -> new DeltaNotFilter(null)
         ),
-        DruidExceptionMatcher.invalidInput().expectMessageIs(
-            "Delta not filter requiers 1 filter predicate and must be 
non-empty. None provided."
-        )
+        "Delta not filter requiers 1 filter predicate and must be non-empty. 
None provided."
     );
   }
 }
diff --git 
a/extensions-contrib/druid-deltalake-extensions/src/test/java/org/apache/druid/delta/filter/DeltaOrFilterTest.java
 
b/extensions-contrib/druid-deltalake-extensions/src/test/java/org/apache/druid/delta/filter/DeltaOrFilterTest.java
index 402c679dcd6..d79650eab12 100644
--- 
a/extensions-contrib/druid-deltalake-extensions/src/test/java/org/apache/druid/delta/filter/DeltaOrFilterTest.java
+++ 
b/extensions-contrib/druid-deltalake-extensions/src/test/java/org/apache/druid/delta/filter/DeltaOrFilterTest.java
@@ -25,12 +25,11 @@ import io.delta.kernel.types.LongType;
 import io.delta.kernel.types.StringType;
 import io.delta.kernel.types.StructField;
 import io.delta.kernel.types.StructType;
+import org.apache.druid.delta.DeltaAssertions;
 import org.apache.druid.error.DruidException;
-import org.apache.druid.error.DruidExceptionMatcher;
 import org.apache.druid.java.util.common.StringUtils;
-import org.hamcrest.MatcherAssert;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
 
 import java.util.Arrays;
 import java.util.Collections;
@@ -54,8 +53,8 @@ public class DeltaOrFilterTest
 
     Predicate predicate = orFilter.getFilterPredicate(SCHEMA);
 
-    Assert.assertTrue(predicate instanceof Or);
-    Assert.assertEquals(2, predicate.getChildren().size());
+    Assertions.assertTrue(predicate instanceof Or);
+    Assertions.assertEquals(2, predicate.getChildren().size());
   }
 
   @Test
@@ -68,33 +67,29 @@ public class DeltaOrFilterTest
         )
     );
 
-    MatcherAssert.assertThat(
-        Assert.assertThrows(DruidException.class, () -> 
orFilter.getFilterPredicate(SCHEMA)),
-        DruidExceptionMatcher.invalidInput().expectMessageIs(
-            StringUtils.format("column[name2] doesn't exist in schema[%s]", 
SCHEMA)
-        )
+    DeltaAssertions.assertInvalidInput(
+        Assertions.assertThrows(DruidException.class, () -> 
orFilter.getFilterPredicate(SCHEMA)),
+        StringUtils.format("column[name2] doesn't exist in schema[%s]", SCHEMA)
     );
   }
 
   @Test
   public void testOrFilterWithNoFilterPredicates()
   {
-    MatcherAssert.assertThat(
-        Assert.assertThrows(
+    DeltaAssertions.assertInvalidInput(
+        Assertions.assertThrows(
             DruidException.class,
             () -> new DeltaOrFilter(null)
         ),
-        DruidExceptionMatcher.invalidInput().expectMessageIs(
-            "Delta or filter requires 2 filter predicates and must be 
non-empty. None provided."
-        )
+        "Delta or filter requires 2 filter predicates and must be non-empty. 
None provided."
     );
   }
 
   @Test
   public void testOrFilterWithOneFilterPredicate()
   {
-    MatcherAssert.assertThat(
-        Assert.assertThrows(
+    DeltaAssertions.assertInvalidInput(
+        Assertions.assertThrows(
             DruidException.class,
             () -> new DeltaOrFilter(
                 Collections.singletonList(
@@ -102,9 +97,7 @@ public class DeltaOrFilterTest
                 )
             )
         ),
-        DruidExceptionMatcher.invalidInput().expectMessageIs(
-            "Delta or filter requires 2 filter predicates, but provided [1]."
-        )
+        "Delta or filter requires 2 filter predicates, but provided [1]."
     );
   }
 }
diff --git 
a/extensions-contrib/druid-deltalake-extensions/src/test/java/org/apache/druid/delta/input/DeltaInputRowTest.java
 
b/extensions-contrib/druid-deltalake-extensions/src/test/java/org/apache/druid/delta/input/DeltaInputRowTest.java
index 4de745b1927..9e270bdab10 100644
--- 
a/extensions-contrib/druid-deltalake-extensions/src/test/java/org/apache/druid/delta/input/DeltaInputRowTest.java
+++ 
b/extensions-contrib/druid-deltalake-extensions/src/test/java/org/apache/druid/delta/input/DeltaInputRowTest.java
@@ -33,11 +33,10 @@ import io.delta.kernel.types.StructType;
 import io.delta.kernel.utils.CloseableIterator;
 import io.delta.kernel.utils.FileStatus;
 import org.apache.druid.data.input.InputRowSchema;
+import org.apache.druid.delta.DeltaAssertions;
 import org.apache.druid.error.DruidException;
-import org.apache.druid.error.DruidExceptionMatcher;
 import org.apache.hadoop.conf.Configuration;
-import org.hamcrest.MatcherAssert;
-import org.junit.Assert;
+import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.params.ParameterizedTest;
 import org.junit.jupiter.params.provider.MethodSource;
 
@@ -102,23 +101,23 @@ public class DeltaInputRowTest
           FilteredColumnarBatch dataReadResult = dataIter.next();
           Row next = dataReadResult.getRows().next();
           DeltaInputRow deltaInputRow = new DeltaInputRow(next, schema);
-          Assert.assertNotNull(deltaInputRow);
-          Assert.assertEquals(dimensions, deltaInputRow.getDimensions());
+          Assertions.assertNotNull(deltaInputRow);
+          Assertions.assertEquals(dimensions, deltaInputRow.getDimensions());
 
           Map<String, Object> expectedRow = expectedRows.get(totalRecordCount);
           for (String key : expectedRow.keySet()) {
             if (schema.getTimestampSpec().getTimestampColumn().equals(key)) {
               final long expectedMillis = ((Long) expectedRow.get(key)) * 1000;
-              Assert.assertEquals(expectedMillis, 
deltaInputRow.getTimestampFromEpoch());
+              Assertions.assertEquals(expectedMillis, 
deltaInputRow.getTimestampFromEpoch());
             } else {
-              Assert.assertEquals(expectedRow.get(key), 
deltaInputRow.getRaw(key));
+              Assertions.assertEquals(expectedRow.get(key), 
deltaInputRow.getRaw(key));
             }
           }
           totalRecordCount += 1;
         }
       }
     }
-    Assert.assertEquals(expectedRows.size(), totalRecordCount);
+    Assertions.assertEquals(expectedRows.size(), totalRecordCount);
   }
 
   @MethodSource("data")
@@ -127,14 +126,12 @@ public class DeltaInputRowTest
   {
     final DeltaInputSource deltaInputSource = new 
DeltaInputSource("non-existent-table", null, null, null);
 
-    MatcherAssert.assertThat(
-        Assert.assertThrows(
+    DeltaAssertions.assertInvalidInput(
+        Assertions.assertThrows(
             DruidException.class,
             () -> deltaInputSource.reader(null, null, null)
         ),
-        DruidExceptionMatcher.invalidInput().expectMessageIs(
-            "tablePath[non-existent-table] not found."
-        )
+        "tablePath[non-existent-table] not found."
     );
   }
 }
diff --git 
a/extensions-contrib/druid-deltalake-extensions/src/test/java/org/apache/druid/delta/input/DeltaInputSourceSerdeTest.java
 
b/extensions-contrib/druid-deltalake-extensions/src/test/java/org/apache/druid/delta/input/DeltaInputSourceSerdeTest.java
index d8eb083cf57..cc6a071f102 100644
--- 
a/extensions-contrib/druid-deltalake-extensions/src/test/java/org/apache/druid/delta/input/DeltaInputSourceSerdeTest.java
+++ 
b/extensions-contrib/druid-deltalake-extensions/src/test/java/org/apache/druid/delta/input/DeltaInputSourceSerdeTest.java
@@ -26,8 +26,8 @@ import org.apache.druid.delta.common.DeltaLakeDruidModule;
 import org.apache.druid.delta.filter.DeltaAndFilter;
 import org.apache.druid.delta.filter.DeltaLessThanFilter;
 import org.apache.druid.jackson.DefaultObjectMapper;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
 
 public class DeltaInputSourceSerdeTest
 {
@@ -43,8 +43,8 @@ public class DeltaInputSourceSerdeTest
                            + "    }";
 
     final DeltaInputSource deltaInputSource = OBJECT_MAPPER.readValue(payload, 
DeltaInputSource.class);
-    Assert.assertEquals("foo/bar", deltaInputSource.getTablePath());
-    Assert.assertNull(deltaInputSource.getFilter());
+    Assertions.assertEquals("foo/bar", deltaInputSource.getTablePath());
+    Assertions.assertNull(deltaInputSource.getFilter());
   }
 
   @Test
@@ -61,8 +61,8 @@ public class DeltaInputSourceSerdeTest
                            + "    }";
 
     final DeltaInputSource deltaInputSource = OBJECT_MAPPER.readValue(payload, 
DeltaInputSource.class);
-    Assert.assertEquals("foo/bar", deltaInputSource.getTablePath());
-    Assert.assertTrue(deltaInputSource.getFilter() instanceof 
DeltaLessThanFilter);
+    Assertions.assertEquals("foo/bar", deltaInputSource.getTablePath());
+    Assertions.assertTrue(deltaInputSource.getFilter() instanceof 
DeltaLessThanFilter);
   }
 
   @Test
@@ -89,8 +89,8 @@ public class DeltaInputSourceSerdeTest
                      + "    }";
 
     final DeltaInputSource deltaInputSource = OBJECT_MAPPER.readValue(payload, 
DeltaInputSource.class);
-    Assert.assertEquals("s3://foo/bar/baz", deltaInputSource.getTablePath());
-    Assert.assertTrue(deltaInputSource.getFilter() instanceof DeltaAndFilter);
+    Assertions.assertEquals("s3://foo/bar/baz", 
deltaInputSource.getTablePath());
+    Assertions.assertTrue(deltaInputSource.getFilter() instanceof 
DeltaAndFilter);
   }
 
   @Test
@@ -105,12 +105,12 @@ public class DeltaInputSourceSerdeTest
                            + "      }\n"
                            + "    }";
 
-    final ValueInstantiationException exception = Assert.assertThrows(
+    final ValueInstantiationException exception = Assertions.assertThrows(
         ValueInstantiationException.class,
         () -> OBJECT_MAPPER.readValue(payload, DeltaInputSource.class)
     );
 
-    Assert.assertTrue(
+    Assertions.assertTrue(
         exception.getCause().getMessage().contains(
             "tablePath cannot be null."
         )
@@ -129,12 +129,12 @@ public class DeltaInputSourceSerdeTest
                            + "      }\n"
                            + "    }";
 
-    final ValueInstantiationException exception = Assert.assertThrows(
+    final ValueInstantiationException exception = Assertions.assertThrows(
         ValueInstantiationException.class,
         () -> OBJECT_MAPPER.readValue(payload, DeltaInputSource.class)
     );
 
-    Assert.assertEquals(
+    Assertions.assertEquals(
         "column is a required field for >= filter.",
         exception.getCause().getMessage()
     );
@@ -150,7 +150,7 @@ public class DeltaInputSourceSerdeTest
                            + "    }";
 
     final DeltaInputSource deltaInputSource = OBJECT_MAPPER.readValue(payload, 
DeltaInputSource.class);
-    Assert.assertEquals("foo/bar", deltaInputSource.getTablePath());
-    Assert.assertEquals((Long) 56L, deltaInputSource.getSnapshotVersion());
+    Assertions.assertEquals("foo/bar", deltaInputSource.getTablePath());
+    Assertions.assertEquals((Long) 56L, deltaInputSource.getSnapshotVersion());
   }
 }
diff --git 
a/extensions-contrib/druid-deltalake-extensions/src/test/java/org/apache/druid/delta/input/DeltaInputSourceTest.java
 
b/extensions-contrib/druid-deltalake-extensions/src/test/java/org/apache/druid/delta/input/DeltaInputSourceTest.java
index 6a689f31df5..68f770fdda8 100644
--- 
a/extensions-contrib/druid-deltalake-extensions/src/test/java/org/apache/druid/delta/input/DeltaInputSourceTest.java
+++ 
b/extensions-contrib/druid-deltalake-extensions/src/test/java/org/apache/druid/delta/input/DeltaInputSourceTest.java
@@ -24,6 +24,7 @@ import org.apache.druid.data.input.InputRow;
 import org.apache.druid.data.input.InputRowListPlusRawValues;
 import org.apache.druid.data.input.InputRowSchema;
 import org.apache.druid.data.input.InputSourceReader;
+import org.apache.druid.delta.DeltaAssertions;
 import org.apache.druid.delta.filter.DeltaAndFilter;
 import org.apache.druid.delta.filter.DeltaEqualsFilter;
 import org.apache.druid.delta.filter.DeltaFilter;
@@ -33,15 +34,14 @@ import 
org.apache.druid.delta.filter.DeltaLessThanOrEqualsFilter;
 import org.apache.druid.delta.filter.DeltaNotFilter;
 import org.apache.druid.delta.filter.DeltaOrFilter;
 import org.apache.druid.error.DruidException;
-import org.apache.druid.error.DruidExceptionMatcher;
 import org.apache.druid.java.util.common.DateTimes;
 import org.apache.druid.java.util.common.parsers.CloseableIterator;
-import org.hamcrest.MatcherAssert;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.Parameterized;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Nested;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.MethodSource;
 
 import java.io.IOException;
 import java.util.ArrayList;
@@ -53,16 +53,15 @@ import java.util.stream.Collectors;
 
 public class DeltaInputSourceTest
 {
-  @Before
+  @BeforeEach
   public void setUp()
   {
     System.setProperty("user.timezone", "UTC");
   }
 
-  @RunWith(Parameterized.class)
-  public static class TablePathParameterTests
+  @Nested
+  public class TablePathParameterTests
   {
-    @Parameterized.Parameters
     public static Object[][] data()
     {
       return new Object[][]{
@@ -128,64 +127,66 @@ public class DeltaInputSourceTest
           }
       };
     }
-
-    @Parameterized.Parameter(0)
-    public String deltaTablePath;
-    @Parameterized.Parameter(1)
-    public InputRowSchema schema;
-    @Parameterized.Parameter(2)
-    public Long snapshotVersion;
-    @Parameterized.Parameter(3)
-    public List<Map<String, Object>> expectedRows;
-
-    @Test
-    public void testSampleDeltaTable() throws IOException
+    @MethodSource("data")
+    @ParameterizedTest
+    public void testSampleDeltaTable(
+        String deltaTablePath,
+        InputRowSchema schema,
+        Long snapshotVersion,
+        List<Map<String, Object>> expectedRows
+    ) throws IOException
     {
       final DeltaInputSource deltaInputSource = new 
DeltaInputSource(deltaTablePath, null, null, snapshotVersion);
       final InputSourceReader inputSourceReader = 
deltaInputSource.reader(schema, null, null);
 
       List<InputRowListPlusRawValues> actualSampledRows = 
sampleAllRows(inputSourceReader);
-      Assert.assertEquals(expectedRows.size(), actualSampledRows.size());
+      Assertions.assertEquals(expectedRows.size(), actualSampledRows.size());
 
       for (int idx = 0; idx < expectedRows.size(); idx++) {
         Map<String, Object> expectedRow = expectedRows.get(idx);
         InputRowListPlusRawValues actualSampledRow = 
actualSampledRows.get(idx);
-        Assert.assertNull(actualSampledRow.getParseException());
+        Assertions.assertNull(actualSampledRow.getParseException());
 
         Map<String, Object> actualSampledRawVals = 
actualSampledRow.getRawValues();
-        Assert.assertNotNull(actualSampledRawVals);
-        Assert.assertNotNull(actualSampledRow.getRawValuesList());
-        Assert.assertEquals(1, actualSampledRow.getRawValuesList().size());
+        Assertions.assertNotNull(actualSampledRawVals);
+        Assertions.assertNotNull(actualSampledRow.getRawValuesList());
+        Assertions.assertEquals(1, actualSampledRow.getRawValuesList().size());
 
         for (String key : expectedRow.keySet()) {
           if (!schema.getColumnsFilter().apply(key)) {
-            Assert.assertNull(actualSampledRawVals.get(key));
+            Assertions.assertNull(actualSampledRawVals.get(key));
           } else {
             if (schema.getTimestampSpec().getTimestampColumn().equals(key)) {
               final long expectedMillis = (Long) expectedRow.get(key);
-              Assert.assertEquals(expectedMillis, 
actualSampledRawVals.get(key));
+              Assertions.assertEquals(expectedMillis, 
actualSampledRawVals.get(key));
             } else {
-              Assert.assertEquals(expectedRow.get(key), 
actualSampledRawVals.get(key));
+              Assertions.assertEquals(expectedRow.get(key), 
actualSampledRawVals.get(key));
             }
           }
         }
       }
     }
 
-    @Test
-    public void testReadDeltaTable() throws IOException
+    @MethodSource("data")
+    @ParameterizedTest
+    public void testReadDeltaTable(
+        String deltaTablePath,
+        InputRowSchema schema,
+        Long snapshotVersion,
+        List<Map<String, Object>> expectedRows
+    ) throws IOException
     {
       final DeltaInputSource deltaInputSource = new 
DeltaInputSource(deltaTablePath, null, null, snapshotVersion);
       final InputSourceReader inputSourceReader = 
deltaInputSource.reader(schema, null, null);
       final List<InputRow> actualReadRows = readAllRows(inputSourceReader);
       validateRows(expectedRows, actualReadRows, schema);
     }
+
   }
 
-  @RunWith(Parameterized.class)
-  public static class FilterParameterTests
+  @Nested
+  public class FilterParameterTests
   {
-    @Parameterized.Parameters
     public static Object[][] data()
     {
       return new Object[][]{
@@ -295,43 +296,40 @@ public class DeltaInputSourceTest
       };
     }
 
-    @Parameterized.Parameter(0)
-    public String deltaTablePath;
-    @Parameterized.Parameter(1)
-    public DeltaFilter filter;
-    @Parameterized.Parameter(2)
-    public InputRowSchema schema;
-    @Parameterized.Parameter(3)
-    public List<Map<String, Object>> expectedRows;
-
-    @Test
-    public void testSampleDeltaTable() throws IOException
+    @MethodSource("data")
+    @ParameterizedTest
+    public void testSampleDeltaTable(
+        String deltaTablePath,
+        DeltaFilter filter,
+        InputRowSchema schema,
+        List<Map<String, Object>> expectedRows
+    ) throws IOException
     {
       final DeltaInputSource deltaInputSource = new 
DeltaInputSource(deltaTablePath, null, filter, null);
       final InputSourceReader inputSourceReader = 
deltaInputSource.reader(schema, null, null);
 
       List<InputRowListPlusRawValues> actualSampledRows = 
sampleAllRows(inputSourceReader);
-      Assert.assertEquals(expectedRows.size(), actualSampledRows.size());
+      Assertions.assertEquals(expectedRows.size(), actualSampledRows.size());
 
       for (int idx = 0; idx < expectedRows.size(); idx++) {
         Map<String, Object> expectedRow = expectedRows.get(idx);
         InputRowListPlusRawValues actualSampledRow = 
actualSampledRows.get(idx);
-        Assert.assertNull(actualSampledRow.getParseException());
+        Assertions.assertNull(actualSampledRow.getParseException());
 
         Map<String, Object> actualSampledRawVals = 
actualSampledRow.getRawValues();
-        Assert.assertNotNull(actualSampledRawVals);
-        Assert.assertNotNull(actualSampledRow.getRawValuesList());
-        Assert.assertEquals(1, actualSampledRow.getRawValuesList().size());
+        Assertions.assertNotNull(actualSampledRawVals);
+        Assertions.assertNotNull(actualSampledRow.getRawValuesList());
+        Assertions.assertEquals(1, actualSampledRow.getRawValuesList().size());
 
         for (String key : expectedRow.keySet()) {
           if (!schema.getColumnsFilter().apply(key)) {
-            Assert.assertNull(actualSampledRawVals.get(key));
+            Assertions.assertNull(actualSampledRawVals.get(key));
           } else {
             if (schema.getTimestampSpec().getTimestampColumn().equals(key)) {
               final long expectedMillis = (Long) expectedRow.get(key);
-              Assert.assertEquals(expectedMillis, 
actualSampledRawVals.get(key));
+              Assertions.assertEquals(expectedMillis, 
actualSampledRawVals.get(key));
             } else {
-              Assert.assertEquals(expectedRow.get(key), 
actualSampledRawVals.get(key));
+              Assertions.assertEquals(expectedRow.get(key), 
actualSampledRawVals.get(key));
             }
           }
         }
@@ -346,29 +344,35 @@ public class DeltaInputSourceTest
       return rows.stream().filter(filter).collect(Collectors.toList());
     }
 
-    @Test
-    public void testReadDeltaTable() throws IOException
+    @MethodSource("data")
+    @ParameterizedTest
+    public void testReadDeltaTable(
+        String deltaTablePath,
+        DeltaFilter filter,
+        InputRowSchema schema,
+        List<Map<String, Object>> expectedRows
+    ) throws IOException
     {
       final DeltaInputSource deltaInputSource = new 
DeltaInputSource(deltaTablePath, null, filter, null);
       final InputSourceReader inputSourceReader = 
deltaInputSource.reader(schema, null, null);
       final List<InputRow> actualReadRows = readAllRows(inputSourceReader);
       validateRows(expectedRows, actualReadRows, schema);
     }
+
   }
 
-  public static class InvalidInputTests
+  @Nested
+  public class InvalidInputTests
   {
     @Test
     public void testNullTable()
     {
-      MatcherAssert.assertThat(
-          Assert.assertThrows(
+      DeltaAssertions.assertInvalidInput(
+          Assertions.assertThrows(
               DruidException.class,
               () -> new DeltaInputSource(null, null, null, null)
           ),
-          DruidExceptionMatcher.invalidInput().expectMessageIs(
-              "tablePath cannot be null."
-          )
+          "tablePath cannot be null."
       );
     }
 
@@ -377,14 +381,12 @@ public class DeltaInputSourceTest
     {
       final DeltaInputSource deltaInputSource = new 
DeltaInputSource("non-existent-table", null, null, null);
 
-      MatcherAssert.assertThat(
-          Assert.assertThrows(
+      DeltaAssertions.assertInvalidInput(
+          Assertions.assertThrows(
               DruidException.class,
               () -> deltaInputSource.createSplits(null, null)
           ),
-          DruidExceptionMatcher.invalidInput().expectMessageIs(
-              "tablePath[non-existent-table] not found."
-          )
+          "tablePath[non-existent-table] not found."
       );
     }
 
@@ -393,14 +395,12 @@ public class DeltaInputSourceTest
     {
       final DeltaInputSource deltaInputSource = new 
DeltaInputSource("non-existent-table", null, null, null);
 
-      MatcherAssert.assertThat(
-          Assert.assertThrows(
+      DeltaAssertions.assertInvalidInput(
+          Assertions.assertThrows(
               DruidException.class,
               () -> deltaInputSource.reader(null, null, null)
           ),
-          DruidExceptionMatcher.invalidInput().expectMessageIs(
-              "tablePath[non-existent-table] not found."
-          )
+          "tablePath[non-existent-table] not found."
       );
     }
 
@@ -414,7 +414,7 @@ public class DeltaInputSourceTest
           100L
       );
 
-      Assert.assertThrows(
+      Assertions.assertThrows(
           KernelException.class,
           () -> deltaInputSource.reader(null, null, null)
       );
@@ -453,7 +453,8 @@ public class DeltaInputSourceTest
    * Without the fix: 1024 x 2 = 2048 rows.
    * With the fix:    4000 rows.
    */
-  public static class BatchDrainRegressionTests
+  @Nested
+  public class BatchDrainRegressionTests
   {
     @Test
     public void testAllRowsReturnedWhenFileExceedsOneBatch() throws IOException
@@ -470,11 +471,11 @@ public class DeltaInputSourceTest
           null
       );
       final List<InputRow> rows = readAllRows(inputSourceReader);
-      Assert.assertEquals(
-          "Expected all rows to be read. "
-          + "If this fails with " + (1024 * 2) + " rows, the per-file batch 
drain bug (GH-18606) has regressed.",
+      Assertions.assertEquals(
           LargeRowGroupDeltaTable.EXPECTED_ROW_COUNT,
-          rows.size()
+          rows.size(),
+          "Expected all rows to be read. "
+          + "If this fails with " + (1024 * 2) + " rows, the per-file batch 
drain bug (GH-18606) has regressed."
       );
     }
   }
@@ -485,21 +486,21 @@ public class DeltaInputSourceTest
       final InputRowSchema schema
   )
   {
-    Assert.assertEquals(expectedRows.size(), actualReadRows.size());
+    Assertions.assertEquals(expectedRows.size(), actualReadRows.size());
 
     for (int idx = 0; idx < expectedRows.size(); idx++) {
       final Map<String, Object> expectedRow = expectedRows.get(idx);
       final InputRow actualInputRow = actualReadRows.get(idx);
       for (String key : expectedRow.keySet()) {
         if (!schema.getColumnsFilter().apply(key)) {
-          Assert.assertNull(actualInputRow.getRaw(key));
+          Assertions.assertNull(actualInputRow.getRaw(key));
         } else {
           if (schema.getTimestampSpec().getTimestampColumn().equals(key)) {
             final long expectedMillis = (Long) expectedRow.get(key) * 1000;
-            Assert.assertEquals(expectedMillis, 
actualInputRow.getTimestampFromEpoch());
-            Assert.assertEquals(DateTimes.utc(expectedMillis), 
actualInputRow.getTimestamp());
+            Assertions.assertEquals(expectedMillis, 
actualInputRow.getTimestampFromEpoch());
+            Assertions.assertEquals(DateTimes.utc(expectedMillis), 
actualInputRow.getTimestamp());
           } else {
-            Assert.assertEquals(expectedRow.get(key), 
actualInputRow.getRaw(key));
+            Assertions.assertEquals(expectedRow.get(key), 
actualInputRow.getRaw(key));
           }
         }
       }
diff --git 
a/extensions-contrib/druid-deltalake-extensions/src/test/java/org/apache/druid/delta/input/DeltaTimeUtilsTest.java
 
b/extensions-contrib/druid-deltalake-extensions/src/test/java/org/apache/druid/delta/input/DeltaTimeUtilsTest.java
index de78ed97aa3..b3bf3045395 100644
--- 
a/extensions-contrib/druid-deltalake-extensions/src/test/java/org/apache/druid/delta/input/DeltaTimeUtilsTest.java
+++ 
b/extensions-contrib/druid-deltalake-extensions/src/test/java/org/apache/druid/delta/input/DeltaTimeUtilsTest.java
@@ -20,15 +20,15 @@
 package org.apache.druid.delta.input;
 
 import org.apache.druid.java.util.common.Intervals;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
 import java.time.Instant;
 
 public class DeltaTimeUtilsTest
 {
-  @Before
+  @BeforeEach
   public void setUp()
   {
     System.setProperty("user.timezone", "UTC");
@@ -37,7 +37,7 @@ public class DeltaTimeUtilsTest
   @Test
   public void testTimestampValue()
   {
-    Assert.assertEquals(
+    Assertions.assertEquals(
         Instant.parse("2018-02-02T00:28:02.000Z"),
         Instant.ofEpochMilli(
             DeltaTimeUtils.getMillisFromTimestamp(
@@ -46,7 +46,7 @@ public class DeltaTimeUtilsTest
         )
     );
 
-    Assert.assertEquals(
+    Assertions.assertEquals(
         Instant.parse("2024-01-31T00:58:03.000Z"),
         Instant.ofEpochMilli(
             DeltaTimeUtils.getMillisFromTimestamp(
@@ -59,7 +59,7 @@ public class DeltaTimeUtilsTest
   @Test
   public void testDateTimeValue()
   {
-    Assert.assertEquals(
+    Assertions.assertEquals(
         Instant.parse("2020-02-01T00:00:00.000Z"),
         Instant.ofEpochSecond(
             DeltaTimeUtils.getSecondsFromDate(
@@ -68,7 +68,7 @@ public class DeltaTimeUtilsTest
         )
     );
 
-    Assert.assertEquals(
+    Assertions.assertEquals(
         Instant.parse("2024-01-01T00:00:00.000Z"),
         Instant.ofEpochSecond(
             DeltaTimeUtils.getSecondsFromDate(
diff --git a/extensions-contrib/druid-iceberg-extensions/pom.xml 
b/extensions-contrib/druid-iceberg-extensions/pom.xml
index 8203357197e..d94ae8b3edd 100644
--- a/extensions-contrib/druid-iceberg-extensions/pom.xml
+++ b/extensions-contrib/druid-iceberg-extensions/pom.xml
@@ -38,6 +38,21 @@
     <hive.version>3.1.3</hive.version>
   </properties>
   <dependencies>
+    <dependency>
+      <groupId>org.junit.jupiter</groupId>
+      <artifactId>junit-jupiter-api</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.junit.jupiter</groupId>
+      <artifactId>junit-jupiter-params</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.junit.jupiter</groupId>
+      <artifactId>junit-jupiter-engine</artifactId>
+      <scope>test</scope>
+    </dependency>
     <dependency>
       <groupId>org.apache.hadoop</groupId>
       <artifactId>hadoop-common</artifactId>
@@ -780,11 +795,6 @@
       <scope>test</scope>
     </dependency>
 
-    <dependency>
-      <groupId>junit</groupId>
-      <artifactId>junit</artifactId>
-      <scope>test</scope>
-    </dependency>
     <dependency>
       <groupId>nl.jqno.equalsverifier</groupId>
       <artifactId>equalsverifier</artifactId>
diff --git 
a/extensions-contrib/druid-iceberg-extensions/src/test/java/org/apache/druid/iceberg/filter/IcebergAndFilterTest.java
 
b/extensions-contrib/druid-iceberg-extensions/src/test/java/org/apache/druid/iceberg/filter/IcebergAndFilterTest.java
index 9d652b93b36..14f3e69299e 100644
--- 
a/extensions-contrib/druid-iceberg-extensions/src/test/java/org/apache/druid/iceberg/filter/IcebergAndFilterTest.java
+++ 
b/extensions-contrib/druid-iceberg-extensions/src/test/java/org/apache/druid/iceberg/filter/IcebergAndFilterTest.java
@@ -24,8 +24,8 @@ import org.apache.iceberg.expressions.Expression;
 import org.apache.iceberg.expressions.Expressions;
 import org.apache.iceberg.expressions.Literal;
 import org.apache.iceberg.types.Types;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
 
 import java.util.Arrays;
 import java.util.Collections;
@@ -61,14 +61,14 @@ public class IcebergAndFilterTest
         new IcebergEqualsFilter(COLUMN2, "value2")
     ));
     Expression expectedExpression = Expressions.and(equalExpression1, 
equalExpression2);
-    Assert.assertEquals(expectedExpression.toString(), 
andFilter.getFilterExpression().toString());
+    Assertions.assertEquals(expectedExpression.toString(), 
andFilter.getFilterExpression().toString());
   }
 
   @Test
   public void testEmptyFilter()
   {
-    Assert.assertThrows(IllegalArgumentException.class, () -> new 
IcebergAndFilter(null));
-    Assert.assertThrows(IllegalArgumentException.class, () -> new 
IcebergAndFilter(Collections.emptyList()));
+    Assertions.assertThrows(IllegalArgumentException.class, () -> new 
IcebergAndFilter(null));
+    Assertions.assertThrows(IllegalArgumentException.class, () -> new 
IcebergAndFilter(Collections.emptyList()));
   }
 
   @Test
@@ -91,6 +91,6 @@ public class IcebergAndFilterTest
         Expressions.and(equalExpression1, equalExpression2),
         intervalExpression
     );
-    Assert.assertEquals(expectedExpression.toString(), 
andFilter.getFilterExpression().toString());
+    Assertions.assertEquals(expectedExpression.toString(), 
andFilter.getFilterExpression().toString());
   }
 }
diff --git 
a/extensions-contrib/druid-iceberg-extensions/src/test/java/org/apache/druid/iceberg/filter/IcebergEqualsFilterTest.java
 
b/extensions-contrib/druid-iceberg-extensions/src/test/java/org/apache/druid/iceberg/filter/IcebergEqualsFilterTest.java
index c021a16e865..1c3e02f9832 100644
--- 
a/extensions-contrib/druid-iceberg-extensions/src/test/java/org/apache/druid/iceberg/filter/IcebergEqualsFilterTest.java
+++ 
b/extensions-contrib/druid-iceberg-extensions/src/test/java/org/apache/druid/iceberg/filter/IcebergEqualsFilterTest.java
@@ -21,8 +21,8 @@ package org.apache.druid.iceberg.filter;
 
 import org.apache.iceberg.expressions.Expression;
 import org.apache.iceberg.expressions.Expressions;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
 
 public class IcebergEqualsFilterTest
 {
@@ -31,6 +31,6 @@ public class IcebergEqualsFilterTest
   {
     IcebergEqualsFilter testFilter = new IcebergEqualsFilter("column1", 
"value1");
     Expression expectedExpression = Expressions.equal("column1", "value1");
-    Assert.assertEquals(expectedExpression.toString(), 
testFilter.getFilterExpression().toString());
+    Assertions.assertEquals(expectedExpression.toString(), 
testFilter.getFilterExpression().toString());
   }
 }
diff --git 
a/extensions-contrib/druid-iceberg-extensions/src/test/java/org/apache/druid/iceberg/filter/IcebergIntervalFilterTest.java
 
b/extensions-contrib/druid-iceberg-extensions/src/test/java/org/apache/druid/iceberg/filter/IcebergIntervalFilterTest.java
index 0efb9dd739b..0b21ec30101 100644
--- 
a/extensions-contrib/druid-iceberg-extensions/src/test/java/org/apache/druid/iceberg/filter/IcebergIntervalFilterTest.java
+++ 
b/extensions-contrib/druid-iceberg-extensions/src/test/java/org/apache/druid/iceberg/filter/IcebergIntervalFilterTest.java
@@ -25,8 +25,8 @@ import org.apache.iceberg.expressions.Expressions;
 import org.apache.iceberg.expressions.Literal;
 import org.apache.iceberg.types.Types;
 import org.joda.time.Interval;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
 
 import java.util.Arrays;
 import java.util.List;
@@ -73,6 +73,6 @@ public class IcebergIntervalFilterTest
             )
         )
     );
-    Assert.assertEquals(expectedExpression.toString(), 
intervalFilter.getFilterExpression().toString());
+    Assertions.assertEquals(expectedExpression.toString(), 
intervalFilter.getFilterExpression().toString());
   }
 }
diff --git 
a/extensions-contrib/druid-iceberg-extensions/src/test/java/org/apache/druid/iceberg/filter/IcebergNotFilterTest.java
 
b/extensions-contrib/druid-iceberg-extensions/src/test/java/org/apache/druid/iceberg/filter/IcebergNotFilterTest.java
index 0d683f512a1..b10225cc5c4 100644
--- 
a/extensions-contrib/druid-iceberg-extensions/src/test/java/org/apache/druid/iceberg/filter/IcebergNotFilterTest.java
+++ 
b/extensions-contrib/druid-iceberg-extensions/src/test/java/org/apache/druid/iceberg/filter/IcebergNotFilterTest.java
@@ -21,8 +21,8 @@ package org.apache.druid.iceberg.filter;
 
 import org.apache.iceberg.expressions.Expression;
 import org.apache.iceberg.expressions.Expressions;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
 
 import java.util.Arrays;
 
@@ -33,7 +33,7 @@ public class IcebergNotFilterTest
   {
     IcebergNotFilter testFilter = new IcebergNotFilter(new 
IcebergEqualsFilter("column1", "value1"));
     Expression expectedExpression = 
Expressions.not(Expressions.equal("column1", "value1"));
-    Assert.assertEquals(expectedExpression.toString(), 
testFilter.getFilterExpression().toString());
+    Assertions.assertEquals(expectedExpression.toString(), 
testFilter.getFilterExpression().toString());
   }
 
   @Test
@@ -76,7 +76,7 @@ public class IcebergNotFilterTest
         Expressions.equal(column2, "value2")
     ));
 
-    Assert.assertEquals(expressionNotAnd.toString(), 
filterNotAnd.getFilterExpression().toString());
-    Assert.assertEquals(expressionNotOr.toString(), 
filterNotOr.getFilterExpression().toString());
+    Assertions.assertEquals(expressionNotAnd.toString(), 
filterNotAnd.getFilterExpression().toString());
+    Assertions.assertEquals(expressionNotOr.toString(), 
filterNotOr.getFilterExpression().toString());
   }
 }
diff --git 
a/extensions-contrib/druid-iceberg-extensions/src/test/java/org/apache/druid/iceberg/filter/IcebergOrFilterTest.java
 
b/extensions-contrib/druid-iceberg-extensions/src/test/java/org/apache/druid/iceberg/filter/IcebergOrFilterTest.java
index 417cdc8d233..0a2f036ecb8 100644
--- 
a/extensions-contrib/druid-iceberg-extensions/src/test/java/org/apache/druid/iceberg/filter/IcebergOrFilterTest.java
+++ 
b/extensions-contrib/druid-iceberg-extensions/src/test/java/org/apache/druid/iceberg/filter/IcebergOrFilterTest.java
@@ -24,8 +24,8 @@ import org.apache.iceberg.expressions.Expression;
 import org.apache.iceberg.expressions.Expressions;
 import org.apache.iceberg.expressions.Literal;
 import org.apache.iceberg.types.Types;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
 
 import java.util.Arrays;
 import java.util.Collections;
@@ -61,14 +61,14 @@ public class IcebergOrFilterTest
         new IcebergEqualsFilter(COLUMN2, "value2")
     ));
     Expression expectedExpression = Expressions.or(equalExpression1, 
equalExpression2);
-    Assert.assertEquals(expectedExpression.toString(), 
orFilter.getFilterExpression().toString());
+    Assertions.assertEquals(expectedExpression.toString(), 
orFilter.getFilterExpression().toString());
   }
 
   @Test
   public void testEmptyFilter()
   {
-    Assert.assertThrows(IllegalArgumentException.class, () -> new 
IcebergAndFilter(null));
-    Assert.assertThrows(IllegalArgumentException.class, () -> new 
IcebergAndFilter(Collections.emptyList()));
+    Assertions.assertThrows(IllegalArgumentException.class, () -> new 
IcebergAndFilter(null));
+    Assertions.assertThrows(IllegalArgumentException.class, () -> new 
IcebergAndFilter(Collections.emptyList()));
   }
 
   @Test
@@ -110,7 +110,7 @@ public class IcebergOrFilterTest
         intervalExpression
     );
 
-    Assert.assertEquals(expectedExpressionOrOr.toString(), 
filterOrOr.getFilterExpression().toString());
-    Assert.assertEquals(expectedExpressionOrAnd.toString(), 
filterOrAnd.getFilterExpression().toString());
+    Assertions.assertEquals(expectedExpressionOrOr.toString(), 
filterOrOr.getFilterExpression().toString());
+    Assertions.assertEquals(expectedExpressionOrAnd.toString(), 
filterOrAnd.getFilterExpression().toString());
   }
 }
diff --git 
a/extensions-contrib/druid-iceberg-extensions/src/test/java/org/apache/druid/iceberg/filter/IcebergRangeFilterTest.java
 
b/extensions-contrib/druid-iceberg-extensions/src/test/java/org/apache/druid/iceberg/filter/IcebergRangeFilterTest.java
index c85ef7c8feb..96342c6f80d 100644
--- 
a/extensions-contrib/druid-iceberg-extensions/src/test/java/org/apache/druid/iceberg/filter/IcebergRangeFilterTest.java
+++ 
b/extensions-contrib/druid-iceberg-extensions/src/test/java/org/apache/druid/iceberg/filter/IcebergRangeFilterTest.java
@@ -21,8 +21,8 @@ package org.apache.druid.iceberg.filter;
 
 import org.apache.iceberg.expressions.Expression;
 import org.apache.iceberg.expressions.Expressions;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
 
 public class IcebergRangeFilterTest
 {
@@ -36,7 +36,7 @@ public class IcebergRangeFilterTest
         Expressions.lessThan(TEST_COLUMN, 50)
     );
     IcebergRangeFilter rangeFilter = new IcebergRangeFilter(TEST_COLUMN, 45, 
50, false, true);
-    Assert.assertEquals(expectedExpression.toString(), 
rangeFilter.getFilterExpression().toString());
+    Assertions.assertEquals(expectedExpression.toString(), 
rangeFilter.getFilterExpression().toString());
   }
 
   @Test
@@ -47,7 +47,7 @@ public class IcebergRangeFilterTest
         Expressions.lessThanOrEqual(TEST_COLUMN, 50)
     );
     IcebergRangeFilter rangeFilter = new IcebergRangeFilter(TEST_COLUMN, 45, 
50, true, false);
-    Assert.assertEquals(expectedExpression.toString(), 
rangeFilter.getFilterExpression().toString());
+    Assertions.assertEquals(expectedExpression.toString(), 
rangeFilter.getFilterExpression().toString());
   }
 
   @Test
@@ -55,7 +55,7 @@ public class IcebergRangeFilterTest
   {
     Expression expectedExpression = Expressions.lessThanOrEqual(TEST_COLUMN, 
50);
     IcebergRangeFilter rangeFilter = new IcebergRangeFilter(TEST_COLUMN, null, 
50, null, false);
-    Assert.assertEquals(expectedExpression.toString(), 
rangeFilter.getFilterExpression().toString());
+    Assertions.assertEquals(expectedExpression.toString(), 
rangeFilter.getFilterExpression().toString());
   }
 
   @Test
@@ -63,6 +63,6 @@ public class IcebergRangeFilterTest
   {
     Expression expectedExpression = 
Expressions.greaterThanOrEqual(TEST_COLUMN, 100);
     IcebergRangeFilter rangeFilter = new IcebergRangeFilter(TEST_COLUMN, 100, 
null, null, null);
-    Assert.assertEquals(expectedExpression.toString(), 
rangeFilter.getFilterExpression().toString());
+    Assertions.assertEquals(expectedExpression.toString(), 
rangeFilter.getFilterExpression().toString());
   }
 }
diff --git 
a/extensions-contrib/druid-iceberg-extensions/src/test/java/org/apache/druid/iceberg/filter/IcebergTimeWindowFilterTest.java
 
b/extensions-contrib/druid-iceberg-extensions/src/test/java/org/apache/druid/iceberg/filter/IcebergTimeWindowFilterTest.java
index 51df6c95ac9..7532d41fb06 100644
--- 
a/extensions-contrib/druid-iceberg-extensions/src/test/java/org/apache/druid/iceberg/filter/IcebergTimeWindowFilterTest.java
+++ 
b/extensions-contrib/druid-iceberg-extensions/src/test/java/org/apache/druid/iceberg/filter/IcebergTimeWindowFilterTest.java
@@ -27,8 +27,8 @@ import org.apache.iceberg.types.Types;
 import org.joda.time.DateTime;
 import org.joda.time.Duration;
 import org.joda.time.Period;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
 
 public class IcebergTimeWindowFilterTest
 {
@@ -57,6 +57,6 @@ public class IcebergTimeWindowFilterTest
                    .value()
         )
     );
-    Assert.assertEquals(expectedExpression.toString(), 
intervalFilter.getFilterExpression().toString());
+    Assertions.assertEquals(expectedExpression.toString(), 
intervalFilter.getFilterExpression().toString());
   }
 }
diff --git 
a/extensions-contrib/druid-iceberg-extensions/src/test/java/org/apache/druid/iceberg/input/GlueIcebergCatalogTest.java
 
b/extensions-contrib/druid-iceberg-extensions/src/test/java/org/apache/druid/iceberg/input/GlueIcebergCatalogTest.java
index d748911181e..45c88a9753c 100644
--- 
a/extensions-contrib/druid-iceberg-extensions/src/test/java/org/apache/druid/iceberg/input/GlueIcebergCatalogTest.java
+++ 
b/extensions-contrib/druid-iceberg-extensions/src/test/java/org/apache/druid/iceberg/input/GlueIcebergCatalogTest.java
@@ -22,8 +22,8 @@ package org.apache.druid.iceberg.input;
 
 import com.fasterxml.jackson.databind.ObjectMapper;
 import org.apache.druid.jackson.DefaultObjectMapper;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
 
 import java.util.HashMap;
 
@@ -42,7 +42,7 @@ public class GlueIcebergCatalogTest
         true,
         mapper
     );
-    Assert.assertEquals("glue", glueCatalog.retrieveCatalog().name());
+    Assertions.assertEquals("glue", glueCatalog.retrieveCatalog().name());
   }
 
   @Test
@@ -53,6 +53,6 @@ public class GlueIcebergCatalogTest
         true,
         mapper
     );
-    Assert.assertEquals(true, glueCatalog.isCaseSensitive());
+    Assertions.assertEquals(true, glueCatalog.isCaseSensitive());
   }
 }
diff --git 
a/extensions-contrib/druid-iceberg-extensions/src/test/java/org/apache/druid/iceberg/input/HiveIcebergCatalogTest.java
 
b/extensions-contrib/druid-iceberg-extensions/src/test/java/org/apache/druid/iceberg/input/HiveIcebergCatalogTest.java
index d7e181e2c1c..6c6489068d9 100644
--- 
a/extensions-contrib/druid-iceberg-extensions/src/test/java/org/apache/druid/iceberg/input/HiveIcebergCatalogTest.java
+++ 
b/extensions-contrib/druid-iceberg-extensions/src/test/java/org/apache/druid/iceberg/input/HiveIcebergCatalogTest.java
@@ -24,8 +24,8 @@ import org.apache.druid.jackson.DefaultObjectMapper;
 import org.apache.druid.java.util.common.FileUtils;
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.security.UserGroupInformation;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
 
 import java.io.File;
 import java.util.HashMap;
@@ -54,8 +54,8 @@ public class HiveIcebergCatalogTest
         mapper,
         new Configuration()
     );
-    Assert.assertEquals("hive", hiveCatalog.retrieveCatalog().name());
-    Assert.assertEquals(2, hiveCatalogNullProps.getCatalogProperties().size());
+    Assertions.assertEquals("hive", hiveCatalog.retrieveCatalog().name());
+    Assertions.assertEquals(2, 
hiveCatalogNullProps.getCatalogProperties().size());
   }
 
   @Test
@@ -74,7 +74,7 @@ public class HiveIcebergCatalogTest
         mapper,
         new Configuration()
     );
-    Assert.assertEquals("hdfs://testuri", hiveCatalog.getCatalogUri());
+    Assertions.assertEquals("hdfs://testuri", hiveCatalog.getCatalogUri());
 
   }
 }
diff --git 
a/extensions-contrib/druid-iceberg-extensions/src/test/java/org/apache/druid/iceberg/input/IcebergInputSourceTest.java
 
b/extensions-contrib/druid-iceberg-extensions/src/test/java/org/apache/druid/iceberg/input/IcebergInputSourceTest.java
index 93d7412cc77..35d03298e82 100644
--- 
a/extensions-contrib/druid-iceberg-extensions/src/test/java/org/apache/druid/iceberg/input/IcebergInputSourceTest.java
+++ 
b/extensions-contrib/druid-iceberg-extensions/src/test/java/org/apache/druid/iceberg/input/IcebergInputSourceTest.java
@@ -46,12 +46,11 @@ import org.apache.iceberg.io.DataWriter;
 import org.apache.iceberg.io.OutputFile;
 import org.apache.iceberg.parquet.Parquet;
 import org.apache.iceberg.types.Types;
-import org.junit.After;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.rules.TemporaryFolder;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.io.TempDir;
 
 import java.io.File;
 import java.io.IOException;
@@ -64,8 +63,8 @@ import java.util.stream.Stream;
 
 public class IcebergInputSourceTest
 {
-  @Rule
-  public TemporaryFolder temporaryFolder = new TemporaryFolder();
+  @TempDir
+  public File temporaryFolder;
 
   private IcebergCatalog testCatalog;
   private TableIdentifier tableIdentifier;
@@ -80,7 +79,7 @@ public class IcebergInputSourceTest
   private static final String NAMESPACE = "default";
   private static final String TABLENAME = "foosTable";
 
-  @Before
+  @BeforeEach
   public void setup() throws IOException
   {
     warehouseDir = FileUtils.createTempDir();
@@ -109,8 +108,8 @@ public class IcebergInputSourceTest
                                             .flatMap(List::stream)
                                             .collect(Collectors.toList());
 
-    Assert.assertEquals(1, inputSource.estimateNumSplits(null, new 
MaxSizeSplitHintSpec(1L, null)));
-    Assert.assertEquals(1, localInputSourceList.size());
+    Assertions.assertEquals(1, inputSource.estimateNumSplits(null, new 
MaxSizeSplitHintSpec(1L, null)));
+    Assertions.assertEquals(1, localInputSourceList.size());
     CloseableIterable<Record> datafileReader = 
Parquet.read(Files.localInput(localInputSourceList.get(0)))
                                                       .project(tableSchema)
                                                       
.createReaderFunc(fileSchema -> GenericParquetReaders.buildReader(
@@ -121,8 +120,8 @@ public class IcebergInputSourceTest
 
 
     for (Record record : datafileReader) {
-      Assert.assertEquals(tableData.get("id"), record.get(0));
-      Assert.assertEquals(tableData.get("name"), record.get(1));
+      Assertions.assertEquals(tableData.get("id"), record.get(0));
+      Assertions.assertEquals(tableData.get("name"), record.get(1));
     }
   }
 
@@ -139,7 +138,7 @@ public class IcebergInputSourceTest
         null
     );
     Stream<InputSplit<List<String>>> splits = inputSource.createSplits(null, 
new MaxSizeSplitHintSpec(null, null));
-    Assert.assertEquals(0, splits.count());
+    Assertions.assertEquals(0, splits.count());
   }
 
   @Test
@@ -161,8 +160,8 @@ public class IcebergInputSourceTest
                                             .flatMap(List::stream)
                                             .collect(Collectors.toList());
 
-    Assert.assertEquals(1, inputSource.estimateNumSplits(null, new 
MaxSizeSplitHintSpec(1L, null)));
-    Assert.assertEquals(1, localInputSourceList.size());
+    Assertions.assertEquals(1, inputSource.estimateNumSplits(null, new 
MaxSizeSplitHintSpec(1L, null)));
+    Assertions.assertEquals(1, localInputSourceList.size());
     CloseableIterable<Record> datafileReader = 
Parquet.read(Files.localInput(localInputSourceList.get(0)))
                                                       .project(tableSchema)
                                                       
.createReaderFunc(fileSchema -> GenericParquetReaders.buildReader(
@@ -173,8 +172,8 @@ public class IcebergInputSourceTest
 
 
     for (Record record : datafileReader) {
-      Assert.assertEquals(tableData.get("id"), record.get(0));
-      Assert.assertEquals(tableData.get("name"), record.get(1));
+      Assertions.assertEquals(tableData.get("id"), record.get(0));
+      Assertions.assertEquals(tableData.get("name"), record.get(1));
     }
   }
 
@@ -191,7 +190,7 @@ public class IcebergInputSourceTest
         null
     );
     Stream<InputSplit<List<String>>> splits = inputSource.createSplits(null, 
new MaxSizeSplitHintSpec(null, null));
-    Assert.assertEquals(1, splits.count());
+    Assertions.assertEquals(1, splits.count());
   }
 
   @Test
@@ -218,8 +217,8 @@ public class IcebergInputSourceTest
                                             .flatMap(List::stream)
                                             .collect(Collectors.toList());
 
-    Assert.assertEquals(1, inputSource.estimateNumSplits(null, new 
MaxSizeSplitHintSpec(1L, null)));
-    Assert.assertEquals(1, localInputSourceList.size());
+    Assertions.assertEquals(1, inputSource.estimateNumSplits(null, new 
MaxSizeSplitHintSpec(1L, null)));
+    Assertions.assertEquals(1, localInputSourceList.size());
   }
 
   @Test
@@ -236,7 +235,7 @@ public class IcebergInputSourceTest
         ResidualFilterMode.IGNORE
     );
     Stream<InputSplit<List<String>>> splits = inputSource.createSplits(null, 
new MaxSizeSplitHintSpec(null, null));
-    Assert.assertEquals(1, splits.count());
+    Assertions.assertEquals(1, splits.count());
   }
 
   @Test
@@ -252,13 +251,13 @@ public class IcebergInputSourceTest
         null,
         ResidualFilterMode.FAIL
     );
-    DruidException exception = Assert.assertThrows(
+    DruidException exception = Assertions.assertThrows(
         DruidException.class,
         () -> inputSource.createSplits(null, new MaxSizeSplitHintSpec(null, 
null))
     );
-    Assert.assertTrue(
-        "Expect residual error to be thrown",
-        exception.getMessage().contains("residual")
+    Assertions.assertTrue(
+        exception.getMessage().contains("residual"),
+        "Expect residual error to be thrown"
     );
   }
 
@@ -281,7 +280,7 @@ public class IcebergInputSourceTest
         ResidualFilterMode.FAIL
     );
     Stream<InputSplit<List<String>>> splits = inputSource.createSplits(null, 
new MaxSizeSplitHintSpec(null, null));
-    Assert.assertEquals(1, splits.count());
+    Assertions.assertEquals(1, splits.count());
   }
 
   @Test
@@ -303,17 +302,17 @@ public class IcebergInputSourceTest
         null,
         ResidualFilterMode.FAIL
     );
-    DruidException exception = Assert.assertThrows(
+    DruidException exception = Assertions.assertThrows(
         DruidException.class,
         () -> inputSource.createSplits(null, new MaxSizeSplitHintSpec(null, 
null))
     );
-    Assert.assertTrue(
-        "Expect residual error to be thrown",
-        exception.getMessage().contains("residual")
+    Assertions.assertTrue(
+        exception.getMessage().contains("residual"),
+        "Expect residual error to be thrown"
     );
   }
 
-  @After
+  @AfterEach
   public void tearDown()
   {
     dropTableFromCatalog(tableIdentifier);
diff --git 
a/extensions-contrib/druid-iceberg-extensions/src/test/java/org/apache/druid/iceberg/input/LocalCatalogTest.java
 
b/extensions-contrib/druid-iceberg-extensions/src/test/java/org/apache/druid/iceberg/input/LocalCatalogTest.java
index 69b1df59515..cbd0d098e58 100644
--- 
a/extensions-contrib/druid-iceberg-extensions/src/test/java/org/apache/druid/iceberg/input/LocalCatalogTest.java
+++ 
b/extensions-contrib/druid-iceberg-extensions/src/test/java/org/apache/druid/iceberg/input/LocalCatalogTest.java
@@ -23,8 +23,8 @@ import com.fasterxml.jackson.core.JsonProcessingException;
 import nl.jqno.equalsverifier.EqualsVerifier;
 import org.apache.druid.jackson.DefaultObjectMapper;
 import org.apache.druid.java.util.common.FileUtils;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
 
 import java.io.File;
 import java.util.HashMap;
@@ -39,9 +39,9 @@ public class LocalCatalogTest
     LocalCatalog before = new LocalCatalog(warehouseDir.getPath(), new 
HashMap<>(), true);
     LocalCatalog after = mapper.readValue(
         mapper.writeValueAsString(before), LocalCatalog.class);
-    Assert.assertEquals(before, after);
-    Assert.assertEquals("hadoop", before.retrieveCatalog().name());
-    Assert.assertEquals("hadoop", after.retrieveCatalog().name());
+    Assertions.assertEquals(before, after);
+    Assertions.assertEquals("hadoop", before.retrieveCatalog().name());
+    Assertions.assertEquals("hadoop", after.retrieveCatalog().name());
   }
 
   @Test
diff --git 
a/extensions-contrib/druid-iceberg-extensions/src/test/java/org/apache/druid/iceberg/input/ResidualFilterModeTest.java
 
b/extensions-contrib/druid-iceberg-extensions/src/test/java/org/apache/druid/iceberg/input/ResidualFilterModeTest.java
index f7a9891f7ac..5a6abefade1 100644
--- 
a/extensions-contrib/druid-iceberg-extensions/src/test/java/org/apache/druid/iceberg/input/ResidualFilterModeTest.java
+++ 
b/extensions-contrib/druid-iceberg-extensions/src/test/java/org/apache/druid/iceberg/input/ResidualFilterModeTest.java
@@ -20,26 +20,26 @@
 package org.apache.druid.iceberg.input;
 
 import com.fasterxml.jackson.databind.ObjectMapper;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
 
 public class ResidualFilterModeTest
 {
   @Test
   public void testFromString()
   {
-    Assert.assertEquals(ResidualFilterMode.IGNORE, 
ResidualFilterMode.fromString("ignore"));
-    Assert.assertEquals(ResidualFilterMode.FAIL, 
ResidualFilterMode.fromString("fail"));
+    Assertions.assertEquals(ResidualFilterMode.IGNORE, 
ResidualFilterMode.fromString("ignore"));
+    Assertions.assertEquals(ResidualFilterMode.FAIL, 
ResidualFilterMode.fromString("fail"));
 
     // Test case insensitivity
-    Assert.assertEquals(ResidualFilterMode.IGNORE, 
ResidualFilterMode.fromString("IGNORE"));
-    Assert.assertEquals(ResidualFilterMode.FAIL, 
ResidualFilterMode.fromString("FAIL"));
+    Assertions.assertEquals(ResidualFilterMode.IGNORE, 
ResidualFilterMode.fromString("IGNORE"));
+    Assertions.assertEquals(ResidualFilterMode.FAIL, 
ResidualFilterMode.fromString("FAIL"));
   }
 
   @Test
   public void testFromStringInvalid()
   {
-    Assert.assertThrows(
+    Assertions.assertThrows(
         IllegalArgumentException.class,
         () -> ResidualFilterMode.fromString("invalid")
     );
@@ -48,8 +48,8 @@ public class ResidualFilterModeTest
   @Test
   public void testGetValue()
   {
-    Assert.assertEquals("ignore", ResidualFilterMode.IGNORE.getValue());
-    Assert.assertEquals("fail", ResidualFilterMode.FAIL.getValue());
+    Assertions.assertEquals("ignore", ResidualFilterMode.IGNORE.getValue());
+    Assertions.assertEquals("fail", ResidualFilterMode.FAIL.getValue());
   }
 
   @Test
@@ -58,11 +58,11 @@ public class ResidualFilterModeTest
     ObjectMapper mapper = new ObjectMapper();
 
     // Test serialization
-    Assert.assertEquals("\"ignore\"", 
mapper.writeValueAsString(ResidualFilterMode.IGNORE));
-    Assert.assertEquals("\"fail\"", 
mapper.writeValueAsString(ResidualFilterMode.FAIL));
+    Assertions.assertEquals("\"ignore\"", 
mapper.writeValueAsString(ResidualFilterMode.IGNORE));
+    Assertions.assertEquals("\"fail\"", 
mapper.writeValueAsString(ResidualFilterMode.FAIL));
 
     // Test deserialization
-    Assert.assertEquals(ResidualFilterMode.IGNORE, 
mapper.readValue("\"ignore\"", ResidualFilterMode.class));
-    Assert.assertEquals(ResidualFilterMode.FAIL, mapper.readValue("\"fail\"", 
ResidualFilterMode.class));
+    Assertions.assertEquals(ResidualFilterMode.IGNORE, 
mapper.readValue("\"ignore\"", ResidualFilterMode.class));
+    Assertions.assertEquals(ResidualFilterMode.FAIL, 
mapper.readValue("\"fail\"", ResidualFilterMode.class));
   }
 }
diff --git 
a/extensions-contrib/druid-iceberg-extensions/src/test/java/org/apache/druid/iceberg/input/RestCatalogTest.java
 
b/extensions-contrib/druid-iceberg-extensions/src/test/java/org/apache/druid/iceberg/input/RestCatalogTest.java
index 6597ade02ec..372fc6d3f9f 100644
--- 
a/extensions-contrib/druid-iceberg-extensions/src/test/java/org/apache/druid/iceberg/input/RestCatalogTest.java
+++ 
b/extensions-contrib/druid-iceberg-extensions/src/test/java/org/apache/druid/iceberg/input/RestCatalogTest.java
@@ -25,10 +25,10 @@ import com.sun.net.httpserver.HttpServer;
 import org.apache.druid.jackson.DefaultObjectMapper;
 import org.apache.hadoop.conf.Configuration;
 import org.apache.iceberg.rest.RESTCatalog;
-import org.junit.After;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
 import java.io.IOException;
 import java.io.OutputStream;
@@ -44,7 +44,7 @@ public class RestCatalogTest
   private HttpServer server = null;
   private ServerSocket serverSocket = null;
 
-  @Before
+  @BeforeEach
   public void setup() throws Exception
   {
     serverSocket = new ServerSocket(0);
@@ -81,12 +81,12 @@ public class RestCatalogTest
     );
     RESTCatalog innerCatalog = (RESTCatalog) testRestCatalog.retrieveCatalog();
 
-    Assert.assertEquals("rest", innerCatalog.name());
-    Assert.assertNotNull(innerCatalog.properties());
-    Assert.assertNotNull(testRestCatalog.getCatalogProperties());
-    Assert.assertEquals(testRestCatalog.getCatalogUri(), 
innerCatalog.properties().get("uri"));
+    Assertions.assertEquals("rest", innerCatalog.name());
+    Assertions.assertNotNull(innerCatalog.properties());
+    Assertions.assertNotNull(testRestCatalog.getCatalogProperties());
+    Assertions.assertEquals(testRestCatalog.getCatalogUri(), 
innerCatalog.properties().get("uri"));
   }
-  @After
+  @AfterEach
   public void tearDown() throws IOException
   {
     if (server != null) {


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to