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

wgtmac pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/parquet-java.git


The following commit(s) were added to refs/heads/master by this push:
     new 59a688fb7 GH-3615: Use assertThat checks in parquet-variant tests 
(#3617)
59a688fb7 is described below

commit 59a688fb71ff142f9414aadd0474d63eccc7c4d2
Author: Eduard Tudenhoefner <[email protected]>
AuthorDate: Wed Jul 8 15:39:06 2026 +0200

    GH-3615: Use assertThat checks in parquet-variant tests (#3617)
---
 .../apache/parquet/variant/TestVariantArray.java   |  49 ++--
 .../parquet/variant/TestVariantArrayBuilder.java   | 131 +++++------
 .../apache/parquet/variant/TestVariantObject.java  |  97 ++++----
 .../parquet/variant/TestVariantObjectBuilder.java  | 233 ++++++++-----------
 .../parquet/variant/TestVariantParseJson.java      | 238 +++++++++----------
 .../apache/parquet/variant/TestVariantScalar.java  | 249 +++++++++-----------
 .../parquet/variant/TestVariantScalarBuilder.java  | 254 ++++++++-------------
 .../apache/parquet/variant/VariantTestUtil.java    |   8 +-
 pom.xml                                            |   1 +
 9 files changed, 552 insertions(+), 708 deletions(-)

diff --git 
a/parquet-variant/src/test/java/org/apache/parquet/variant/TestVariantArray.java
 
b/parquet-variant/src/test/java/org/apache/parquet/variant/TestVariantArray.java
index 6e92b8576..91bffb560 100644
--- 
a/parquet-variant/src/test/java/org/apache/parquet/variant/TestVariantArray.java
+++ 
b/parquet-variant/src/test/java/org/apache/parquet/variant/TestVariantArray.java
@@ -18,10 +18,12 @@
  */
 package org.apache.parquet.variant;
 
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
+
 import java.nio.ByteBuffer;
 import java.nio.ByteOrder;
 import java.time.LocalDate;
-import org.junit.Assert;
 import org.junit.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -77,7 +79,7 @@ public class TestVariantArray {
     Variant value = new Variant(ByteBuffer.wrap(new byte[] {0b0011, 0x00}), 
VariantTestUtil.EMPTY_METADATA);
     VariantTestUtil.testVariant(value, v -> {
       VariantTestUtil.checkType(v, VariantUtil.ARRAY, Variant.Type.ARRAY);
-      Assert.assertEquals(0, v.numArrayElements());
+      assertThat(v.numArrayElements()).isEqualTo(0);
     });
   }
 
@@ -87,7 +89,7 @@ public class TestVariantArray {
         ByteBuffer.wrap(new byte[] {0b10011, 0x00, 0x00, 0x00, 0x00}), 
VariantTestUtil.EMPTY_METADATA);
     VariantTestUtil.testVariant(value, v -> {
       VariantTestUtil.checkType(v, VariantUtil.ARRAY, Variant.Type.ARRAY);
-      Assert.assertEquals(0, v.numArrayElements());
+      assertThat(v.numArrayElements()).isEqualTo(0);
     });
   }
 
@@ -98,7 +100,7 @@ public class TestVariantArray {
         VariantTestUtil.EMPTY_METADATA);
     VariantTestUtil.testVariant(value, v -> {
       VariantTestUtil.checkType(v, VariantUtil.ARRAY, Variant.Type.ARRAY);
-      Assert.assertEquals(511, v.numArrayElements());
+      assertThat(v.numArrayElements()).isEqualTo(511);
     });
   }
 
@@ -111,26 +113,24 @@ public class TestVariantArray {
 
     VariantTestUtil.testVariant(value, v -> {
       VariantTestUtil.checkType(v, VariantUtil.ARRAY, Variant.Type.ARRAY);
-      Assert.assertEquals(5, v.numArrayElements());
+      assertThat(v.numArrayElements()).isEqualTo(5);
       VariantTestUtil.checkType(v.getElementAtIndex(0), VariantUtil.PRIMITIVE, 
Variant.Type.DATE);
-      Assert.assertEquals(
-          LocalDate.parse("2025-04-17"),
-          LocalDate.ofEpochDay(v.getElementAtIndex(0).getInt()));
+      
assertThat(LocalDate.ofEpochDay(v.getElementAtIndex(0).getInt())).isEqualTo(LocalDate.parse("2025-04-17"));
       VariantTestUtil.checkType(v.getElementAtIndex(1), VariantUtil.PRIMITIVE, 
Variant.Type.BOOLEAN);
-      Assert.assertTrue(v.getElementAtIndex(1).getBoolean());
+      assertThat(v.getElementAtIndex(1).getBoolean()).isTrue();
       VariantTestUtil.checkType(v.getElementAtIndex(2), VariantUtil.PRIMITIVE, 
Variant.Type.INT);
-      Assert.assertEquals(1234567890, v.getElementAtIndex(2).getInt());
+      assertThat(v.getElementAtIndex(2).getInt()).isEqualTo(1234567890);
       VariantTestUtil.checkType(v.getElementAtIndex(3), VariantUtil.PRIMITIVE, 
Variant.Type.STRING);
-      Assert.assertEquals("variant", v.getElementAtIndex(3).getString());
+      assertThat(v.getElementAtIndex(3).getString()).isEqualTo("variant");
       VariantTestUtil.checkType(v.getElementAtIndex(4), VariantUtil.ARRAY, 
Variant.Type.ARRAY);
 
       Variant nestedV = v.getElementAtIndex(4);
-      Assert.assertEquals(3, nestedV.numArrayElements());
+      assertThat(nestedV.numArrayElements()).isEqualTo(3);
       VariantTestUtil.checkType(nestedV.getElementAtIndex(0), 
VariantUtil.PRIMITIVE, Variant.Type.INT);
-      Assert.assertEquals(1234567890, nestedV.getElementAtIndex(0).getInt());
+      assertThat(nestedV.getElementAtIndex(0).getInt()).isEqualTo(1234567890);
       VariantTestUtil.checkType(nestedV.getElementAtIndex(1), 
VariantUtil.PRIMITIVE, Variant.Type.NULL);
       VariantTestUtil.checkType(nestedV.getElementAtIndex(2), 
VariantUtil.SHORT_STR, Variant.Type.STRING);
-      Assert.assertEquals("c", nestedV.getElementAtIndex(2).getString());
+      assertThat(nestedV.getElementAtIndex(2).getString()).isEqualTo("c");
     });
   }
 
@@ -141,13 +141,13 @@ public class TestVariantArray {
 
     VariantTestUtil.testVariant(value, v -> {
       VariantTestUtil.checkType(v, VariantUtil.ARRAY, Variant.Type.ARRAY);
-      Assert.assertEquals(3, v.numArrayElements());
+      assertThat(v.numArrayElements()).isEqualTo(3);
       VariantTestUtil.checkType(v.getElementAtIndex(0), VariantUtil.PRIMITIVE, 
Variant.Type.STRING);
-      Assert.assertEquals(randomString, v.getElementAtIndex(0).getString());
+      assertThat(v.getElementAtIndex(0).getString()).isEqualTo(randomString);
       VariantTestUtil.checkType(v.getElementAtIndex(1), VariantUtil.PRIMITIVE, 
Variant.Type.BOOLEAN);
-      Assert.assertTrue(v.getElementAtIndex(1).getBoolean());
+      assertThat(v.getElementAtIndex(1).getBoolean()).isTrue();
       VariantTestUtil.checkType(v.getElementAtIndex(2), VariantUtil.PRIMITIVE, 
Variant.Type.INT);
-      Assert.assertEquals(1234567890, v.getElementAtIndex(2).getInt());
+      assertThat(v.getElementAtIndex(2).getInt()).isEqualTo(1234567890);
     });
   }
 
@@ -171,13 +171,10 @@ public class TestVariantArray {
 
   @Test
   public void testInvalidArray() {
-    try {
-      // An object header
-      Variant value = new Variant(ByteBuffer.wrap(new byte[] {0b1000010}), 
VariantTestUtil.EMPTY_METADATA);
-      value.numArrayElements();
-      Assert.fail("Expected exception not thrown");
-    } catch (Exception e) {
-      Assert.assertEquals("Cannot read OBJECT value as ARRAY", e.getMessage());
-    }
+    // An object header
+    Variant value = new Variant(ByteBuffer.wrap(new byte[] {0b1000010}), 
VariantTestUtil.EMPTY_METADATA);
+    assertThatThrownBy(value::numArrayElements)
+        .isInstanceOf(IllegalArgumentException.class)
+        .hasMessage("Cannot read OBJECT value as ARRAY");
   }
 }
diff --git 
a/parquet-variant/src/test/java/org/apache/parquet/variant/TestVariantArrayBuilder.java
 
b/parquet-variant/src/test/java/org/apache/parquet/variant/TestVariantArrayBuilder.java
index 98060d218..b443f3ae8 100644
--- 
a/parquet-variant/src/test/java/org/apache/parquet/variant/TestVariantArrayBuilder.java
+++ 
b/parquet-variant/src/test/java/org/apache/parquet/variant/TestVariantArrayBuilder.java
@@ -18,10 +18,12 @@
  */
 package org.apache.parquet.variant;
 
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
+
 import java.nio.ByteBuffer;
 import java.nio.ByteOrder;
 import java.util.UUID;
-import org.junit.Assert;
 import org.junit.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -47,13 +49,13 @@ public class TestVariantArrayBuilder {
 
     VariantTestUtil.testVariant(builder.build(), v -> {
       VariantTestUtil.checkType(v, VariantUtil.ARRAY, Variant.Type.ARRAY);
-      Assert.assertEquals(3, v.numArrayElements());
+      assertThat(v.numArrayElements()).isEqualTo(3);
       VariantTestUtil.checkType(v.getElementAtIndex(0), VariantUtil.PRIMITIVE, 
Variant.Type.INT);
-      Assert.assertEquals(1, v.getElementAtIndex(0).getInt());
+      assertThat(v.getElementAtIndex(0).getInt()).isEqualTo(1);
       VariantTestUtil.checkType(v.getElementAtIndex(1), VariantUtil.PRIMITIVE, 
Variant.Type.UUID);
-      Assert.assertEquals(expected, v.getElementAtIndex(1).getUUID());
+      assertThat(v.getElementAtIndex(1).getUUID()).isEqualTo(expected);
       VariantTestUtil.checkType(v.getElementAtIndex(2), VariantUtil.PRIMITIVE, 
Variant.Type.INT);
-      Assert.assertEquals(2, v.getElementAtIndex(2).getInt());
+      assertThat(v.getElementAtIndex(2).getInt()).isEqualTo(2);
     });
   }
 
@@ -64,7 +66,7 @@ public class TestVariantArrayBuilder {
     b.endArray();
     VariantTestUtil.testVariant(b.build(), v -> {
       VariantTestUtil.checkType(v, VariantUtil.ARRAY, Variant.Type.ARRAY);
-      Assert.assertEquals(0, v.numArrayElements());
+      assertThat(v.numArrayElements()).isEqualTo(0);
     });
   }
 
@@ -78,10 +80,10 @@ public class TestVariantArrayBuilder {
     b.endArray();
     VariantTestUtil.testVariant(b.build(), v -> {
       VariantTestUtil.checkType(v, VariantUtil.ARRAY, Variant.Type.ARRAY);
-      Assert.assertEquals(511, v.numArrayElements());
+      assertThat(v.numArrayElements()).isEqualTo(511);
       for (int i = 0; i < 511; i++) {
         VariantTestUtil.checkType(v.getElementAtIndex(i), 
VariantUtil.PRIMITIVE, Variant.Type.INT);
-        Assert.assertEquals(i, v.getElementAtIndex(i).getInt());
+        assertThat(v.getElementAtIndex(i).getInt()).isEqualTo(i);
       }
     });
   }
@@ -113,28 +115,28 @@ public class TestVariantArrayBuilder {
 
     VariantTestUtil.testVariant(b.build(), v -> {
       VariantTestUtil.checkType(v, VariantUtil.ARRAY, Variant.Type.ARRAY);
-      Assert.assertEquals(4, v.numArrayElements());
+      assertThat(v.numArrayElements()).isEqualTo(4);
       VariantTestUtil.checkType(v.getElementAtIndex(0), VariantUtil.PRIMITIVE, 
Variant.Type.BOOLEAN);
-      Assert.assertTrue(v.getElementAtIndex(0).getBoolean());
+      assertThat(v.getElementAtIndex(0).getBoolean()).isTrue();
 
       VariantTestUtil.checkType(v.getElementAtIndex(1), VariantUtil.OBJECT, 
Variant.Type.OBJECT);
-      Assert.assertEquals(1, v.getElementAtIndex(1).numObjectElements());
+      assertThat(v.getElementAtIndex(1).numObjectElements()).isEqualTo(1);
       VariantTestUtil.checkType(
           v.getElementAtIndex(1).getFieldByKey("key"), VariantUtil.PRIMITIVE, 
Variant.Type.INT);
-      Assert.assertEquals(321, 
v.getElementAtIndex(1).getFieldByKey("key").getInt());
+      
assertThat(v.getElementAtIndex(1).getFieldByKey("key").getInt()).isEqualTo(321);
 
       VariantTestUtil.checkType(v.getElementAtIndex(2), VariantUtil.PRIMITIVE, 
Variant.Type.LONG);
-      Assert.assertEquals(1234567890, v.getElementAtIndex(2).getLong());
+      assertThat(v.getElementAtIndex(2).getLong()).isEqualTo(1234567890);
 
       VariantTestUtil.checkType(v.getElementAtIndex(3), VariantUtil.ARRAY, 
Variant.Type.ARRAY);
       Variant nested = v.getElementAtIndex(3);
-      Assert.assertEquals(3, nested.numArrayElements());
+      assertThat(nested.numArrayElements()).isEqualTo(3);
       VariantTestUtil.checkType(nested.getElementAtIndex(0), 
VariantUtil.ARRAY, Variant.Type.ARRAY);
-      Assert.assertEquals(0, nested.getElementAtIndex(0).numArrayElements());
+      assertThat(nested.getElementAtIndex(0).numArrayElements()).isEqualTo(0);
       VariantTestUtil.checkType(nested.getElementAtIndex(1), 
VariantUtil.SHORT_STR, Variant.Type.STRING);
-      Assert.assertEquals("variant", nested.getElementAtIndex(1).getString());
+      assertThat(nested.getElementAtIndex(1).getString()).isEqualTo("variant");
       VariantTestUtil.checkType(nested.getElementAtIndex(2), 
VariantUtil.OBJECT, Variant.Type.OBJECT);
-      Assert.assertEquals(0, nested.getElementAtIndex(2).numObjectElements());
+      assertThat(nested.getElementAtIndex(2).numObjectElements()).isEqualTo(0);
     });
   }
 
@@ -157,11 +159,11 @@ public class TestVariantArrayBuilder {
       for (int i = 1000; i >= 0; i--) {
         VariantTestUtil.checkType(curr, VariantUtil.ARRAY, Variant.Type.ARRAY);
         if (i == 0) {
-          Assert.assertEquals(0, curr.numArrayElements());
+          assertThat(curr.numArrayElements()).isEqualTo(0);
         } else {
-          Assert.assertEquals(2, curr.numArrayElements());
+          assertThat(curr.numArrayElements()).isEqualTo(2);
           VariantTestUtil.checkType(curr.getElementAtIndex(0), 
VariantUtil.SHORT_STR, Variant.Type.STRING);
-          Assert.assertEquals("str" + i, 
curr.getElementAtIndex(0).getString());
+          assertThat(curr.getElementAtIndex(0).getString()).isEqualTo("str" + 
i);
           curr = curr.getElementAtIndex(1);
         }
       }
@@ -178,13 +180,13 @@ public class TestVariantArrayBuilder {
 
     VariantTestUtil.testVariant(b.build(), v -> {
       VariantTestUtil.checkType(v, VariantUtil.ARRAY, Variant.Type.ARRAY);
-      Assert.assertEquals(3, v.numArrayElements());
+      assertThat(v.numArrayElements()).isEqualTo(3);
       VariantTestUtil.checkType(v.getElementAtIndex(0), VariantUtil.PRIMITIVE, 
Variant.Type.STRING);
-      Assert.assertEquals(randomString, v.getElementAtIndex(0).getString());
+      assertThat(v.getElementAtIndex(0).getString()).isEqualTo(randomString);
       VariantTestUtil.checkType(v.getElementAtIndex(1), VariantUtil.PRIMITIVE, 
Variant.Type.BOOLEAN);
-      Assert.assertTrue(v.getElementAtIndex(1).getBoolean());
+      assertThat(v.getElementAtIndex(1).getBoolean()).isTrue();
       VariantTestUtil.checkType(v.getElementAtIndex(2), VariantUtil.PRIMITIVE, 
Variant.Type.LONG);
-      Assert.assertEquals(1234567890, v.getElementAtIndex(2).getLong());
+      assertThat(v.getElementAtIndex(2).getLong()).isEqualTo(1234567890);
     });
   }
 
@@ -210,47 +212,35 @@ public class TestVariantArrayBuilder {
   public void testMissingEndArray() {
     VariantBuilder b = new VariantBuilder();
     b.startArray();
-    try {
-      b.build();
-      Assert.fail("Expected Exception when calling build() without 
endArray()");
-    } catch (Exception e) {
-      // expected
-    }
+    assertThatThrownBy(b::build)
+        .isInstanceOf(IllegalStateException.class)
+        .hasMessage("Cannot call build() while an array is being built. Must 
call endArray() first.");
   }
 
   @Test
   public void testMissingStartArray() {
     VariantBuilder b = new VariantBuilder();
-    try {
-      b.endArray();
-      Assert.fail("Expected Exception when calling endArray() without 
startArray()");
-    } catch (Exception e) {
-      // expected
-    }
+    assertThatThrownBy(b::endArray)
+        .isInstanceOf(IllegalStateException.class)
+        .hasMessage("Cannot call endArray() without calling startArray() 
first.");
   }
 
   @Test
   public void testInvalidAppendDuringArray() {
     VariantBuilder b = new VariantBuilder();
     b.startArray();
-    try {
-      b.appendInt(1);
-      Assert.fail("Expected Exception when calling append() before 
endArray()");
-    } catch (Exception e) {
-      // expected
-    }
+    assertThatThrownBy(() -> b.appendInt(1))
+        .isInstanceOf(IllegalStateException.class)
+        .hasMessage("Cannot call append() methods while an array is being 
built. Must call endArray() first.");
   }
 
   @Test
   public void testStartArrayEndObject() {
     VariantBuilder b = new VariantBuilder();
     VariantArrayBuilder obj = b.startArray();
-    try {
-      obj.endObject();
-      Assert.fail("Expected Exception when calling endObject() while building 
array");
-    } catch (Exception e) {
-      // expected
-    }
+    assertThatThrownBy(obj::endObject)
+        .isInstanceOf(IllegalStateException.class)
+        .hasMessage("Cannot call endObject() without calling startObject() 
first.");
   }
 
   @Test
@@ -258,12 +248,9 @@ public class TestVariantArrayBuilder {
     VariantBuilder b = new VariantBuilder();
     VariantArrayBuilder arr = b.startArray();
     arr.startObject();
-    try {
-      b.endArray();
-      Assert.fail("Expected Exception when calling endArray() with an open 
nested object");
-    } catch (Exception e) {
-      // expected
-    }
+    assertThatThrownBy(b::endArray)
+        .isInstanceOf(IllegalStateException.class)
+        .hasMessage("Cannot call endArray() while a nested object/array is 
still open.");
   }
 
   @Test
@@ -272,12 +259,9 @@ public class TestVariantArrayBuilder {
     VariantArrayBuilder arr = b.startArray();
     VariantObjectBuilder nested = arr.startObject();
     nested.appendKey("nested");
-    try {
-      b.endArray();
-      Assert.fail("Expected Exception when calling endArray() with an open 
nested object");
-    } catch (Exception e) {
-      // expected
-    }
+    assertThatThrownBy(b::endArray)
+        .isInstanceOf(IllegalStateException.class)
+        .hasMessage("Cannot call endArray() while a nested object/array is 
still open.");
   }
 
   @Test
@@ -287,12 +271,9 @@ public class TestVariantArrayBuilder {
     VariantObjectBuilder nested = arr.startObject();
     nested.appendKey("nested");
     nested.appendInt(1);
-    try {
-      b.endArray();
-      Assert.fail("Expected Exception when calling endArray() with an open 
nested object");
-    } catch (Exception e) {
-      // expected
-    }
+    assertThatThrownBy(b::endArray)
+        .isInstanceOf(IllegalStateException.class)
+        .hasMessage("Cannot call endArray() while a nested object/array is 
still open.");
   }
 
   @Test
@@ -300,12 +281,9 @@ public class TestVariantArrayBuilder {
     VariantBuilder b = new VariantBuilder();
     VariantArrayBuilder arr = b.startArray();
     arr.startArray();
-    try {
-      b.endArray();
-      Assert.fail("Expected Exception when calling endArray() with an open 
nested array");
-    } catch (Exception e) {
-      // expected
-    }
+    assertThatThrownBy(b::endArray)
+        .isInstanceOf(IllegalStateException.class)
+        .hasMessage("Cannot call endArray() while a nested object/array is 
still open.");
   }
 
   @Test
@@ -314,11 +292,8 @@ public class TestVariantArrayBuilder {
     VariantArrayBuilder arr = b.startArray();
     VariantArrayBuilder nested = arr.startArray();
     nested.appendInt(1);
-    try {
-      b.endArray();
-      Assert.fail("Expected Exception when calling endArray() with an open 
nested array");
-    } catch (Exception e) {
-      // expected
-    }
+    assertThatThrownBy(b::endArray)
+        .isInstanceOf(IllegalStateException.class)
+        .hasMessage("Cannot call endArray() while a nested object/array is 
still open.");
   }
 }
diff --git 
a/parquet-variant/src/test/java/org/apache/parquet/variant/TestVariantObject.java
 
b/parquet-variant/src/test/java/org/apache/parquet/variant/TestVariantObject.java
index 1c5dc4c5e..8427457cb 100644
--- 
a/parquet-variant/src/test/java/org/apache/parquet/variant/TestVariantObject.java
+++ 
b/parquet-variant/src/test/java/org/apache/parquet/variant/TestVariantObject.java
@@ -18,6 +18,9 @@
  */
 package org.apache.parquet.variant;
 
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
+
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableMap;
 import java.nio.ByteBuffer;
@@ -30,7 +33,6 @@ import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
-import org.junit.Assert;
 import org.junit.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -139,7 +141,7 @@ public class TestVariantObject {
     Variant value = new Variant(ByteBuffer.wrap(new byte[] {0b10, 0x00}), 
VariantTestUtil.EMPTY_METADATA);
     VariantTestUtil.testVariant(value, v -> {
       VariantTestUtil.checkType(v, VariantUtil.OBJECT, Variant.Type.OBJECT);
-      Assert.assertEquals(0, v.numObjectElements());
+      assertThat(v.numObjectElements()).isEqualTo(0);
     });
   }
 
@@ -149,7 +151,7 @@ public class TestVariantObject {
         ByteBuffer.wrap(new byte[] {0b1000010, 0x00, 0x00, 0x00, 0x00}), 
VariantTestUtil.EMPTY_METADATA);
     VariantTestUtil.testVariant(value, v -> {
       VariantTestUtil.checkType(v, VariantUtil.OBJECT, Variant.Type.OBJECT);
-      Assert.assertEquals(0, v.numObjectElements());
+      assertThat(v.numObjectElements()).isEqualTo(0);
     });
   }
 
@@ -163,13 +165,13 @@ public class TestVariantObject {
         constructMetadata(false, ImmutableList.of("c", "b", "a")));
     VariantTestUtil.testVariant(value, v -> {
       VariantTestUtil.checkType(v, VariantUtil.OBJECT, Variant.Type.OBJECT);
-      Assert.assertEquals(3, v.numObjectElements());
+      assertThat(v.numObjectElements()).isEqualTo(3);
       VariantTestUtil.checkType(v.getFieldByKey("a"), VariantUtil.PRIMITIVE, 
Variant.Type.INT);
-      Assert.assertEquals(1234567890, v.getFieldByKey("a").getInt());
+      assertThat(v.getFieldByKey("a").getInt()).isEqualTo(1234567890);
       VariantTestUtil.checkType(v.getFieldByKey("b"), VariantUtil.PRIMITIVE, 
Variant.Type.BOOLEAN);
-      Assert.assertTrue(v.getFieldByKey("b").getBoolean());
+      assertThat(v.getFieldByKey("b").getBoolean()).isTrue();
       VariantTestUtil.checkType(v.getFieldByKey("c"), VariantUtil.PRIMITIVE, 
Variant.Type.STRING);
-      Assert.assertEquals("variant", v.getFieldByKey("c").getString());
+      assertThat(v.getFieldByKey("c").getString()).isEqualTo("variant");
     });
   }
 
@@ -184,19 +186,18 @@ public class TestVariantObject {
         constructMetadata(true, ImmutableList.of("a", "b", "c")));
     VariantTestUtil.testVariant(value, v -> {
       VariantTestUtil.checkType(v, VariantUtil.OBJECT, Variant.Type.OBJECT);
-      Assert.assertEquals(3, v.numObjectElements());
+      assertThat(v.numObjectElements()).isEqualTo(3);
       VariantTestUtil.checkType(v.getFieldByKey("a"), VariantUtil.PRIMITIVE, 
Variant.Type.INT);
-      Assert.assertEquals(1234567890, v.getFieldByKey("a").getInt());
+      assertThat(v.getFieldByKey("a").getInt()).isEqualTo(1234567890);
       VariantTestUtil.checkType(v.getFieldByKey("b"), VariantUtil.PRIMITIVE, 
Variant.Type.BOOLEAN);
-      Assert.assertTrue(v.getFieldByKey("b").getBoolean());
+      assertThat(v.getFieldByKey("b").getBoolean()).isTrue();
       VariantTestUtil.checkType(v.getFieldByKey("c"), VariantUtil.OBJECT, 
Variant.Type.OBJECT);
 
       Variant nestedV = v.getFieldByKey("c");
-      Assert.assertEquals(2, nestedV.numObjectElements());
+      assertThat(nestedV.numObjectElements()).isEqualTo(2);
       VariantTestUtil.checkType(nestedV.getFieldByKey("a"), 
VariantUtil.PRIMITIVE, Variant.Type.DATE);
-      Assert.assertEquals(
-          LocalDate.parse("2025-04-17"),
-          LocalDate.ofEpochDay(nestedV.getFieldByKey("a").getInt()));
+      assertThat(LocalDate.ofEpochDay(nestedV.getFieldByKey("a").getInt()))
+          .isEqualTo(LocalDate.parse("2025-04-17"));
       VariantTestUtil.checkType(nestedV.getFieldByKey("c"), 
VariantUtil.PRIMITIVE, Variant.Type.NULL);
     });
   }
@@ -211,13 +212,13 @@ public class TestVariantObject {
         constructMetadata(true, ImmutableList.of("a", "b", "c")));
     VariantTestUtil.testVariant(value, v -> {
       VariantTestUtil.checkType(v, VariantUtil.OBJECT, Variant.Type.OBJECT);
-      Assert.assertEquals(3, v.numObjectElements());
+      assertThat(v.numObjectElements()).isEqualTo(3);
       VariantTestUtil.checkType(v.getFieldByKey("a"), VariantUtil.PRIMITIVE, 
Variant.Type.INT);
-      Assert.assertEquals(1234567890, v.getFieldByKey("a").getInt());
+      assertThat(v.getFieldByKey("a").getInt()).isEqualTo(1234567890);
       VariantTestUtil.checkType(v.getFieldByKey("b"), VariantUtil.PRIMITIVE, 
Variant.Type.BOOLEAN);
-      Assert.assertTrue(v.getFieldByKey("b").getBoolean());
+      assertThat(v.getFieldByKey("b").getBoolean()).isTrue();
       VariantTestUtil.checkType(v.getFieldByKey("c"), VariantUtil.PRIMITIVE, 
Variant.Type.STRING);
-      Assert.assertEquals("variant", v.getFieldByKey("c").getString());
+      assertThat(v.getFieldByKey("c").getString()).isEqualTo("variant");
     });
   }
 
@@ -231,13 +232,13 @@ public class TestVariantObject {
         constructMetadata(true, ImmutableList.of("a", "b", "c")));
     VariantTestUtil.testVariant(value, v -> {
       VariantTestUtil.checkType(v, VariantUtil.OBJECT, Variant.Type.OBJECT);
-      Assert.assertEquals(3, v.numObjectElements());
+      assertThat(v.numObjectElements()).isEqualTo(3);
       VariantTestUtil.checkType(v.getFieldByKey("a"), VariantUtil.PRIMITIVE, 
Variant.Type.STRING);
-      Assert.assertEquals(randomString, v.getFieldByKey("a").getString());
+      assertThat(v.getFieldByKey("a").getString()).isEqualTo(randomString);
       VariantTestUtil.checkType(v.getFieldByKey("b"), VariantUtil.PRIMITIVE, 
Variant.Type.BOOLEAN);
-      Assert.assertTrue(v.getFieldByKey("b").getBoolean());
+      assertThat(v.getFieldByKey("b").getBoolean()).isTrue();
       VariantTestUtil.checkType(v.getFieldByKey("c"), VariantUtil.PRIMITIVE, 
Variant.Type.INT);
-      Assert.assertEquals(1234567890, v.getFieldByKey("c").getInt());
+      assertThat(v.getFieldByKey("c").getInt()).isEqualTo(1234567890);
     });
   }
 
@@ -275,11 +276,11 @@ public class TestVariantObject {
         constructMetadata(true, fieldNames));
     VariantTestUtil.testVariant(value, v -> {
       VariantTestUtil.checkType(v, VariantUtil.OBJECT, Variant.Type.OBJECT);
-      Assert.assertEquals(2, v.numObjectElements());
+      assertThat(v.numObjectElements()).isEqualTo(2);
       VariantTestUtil.checkType(v.getFieldByKey("z1"), VariantUtil.PRIMITIVE, 
Variant.Type.BOOLEAN);
-      Assert.assertTrue(v.getFieldByKey("z1").getBoolean());
+      assertThat(v.getFieldByKey("z1").getBoolean()).isTrue();
       VariantTestUtil.checkType(v.getFieldByKey("z2"), VariantUtil.PRIMITIVE, 
Variant.Type.INT);
-      Assert.assertEquals(1234567890, v.getFieldByKey("z2").getInt());
+      assertThat(v.getFieldByKey("z2").getInt()).isEqualTo(1234567890);
     });
   }
 
@@ -318,28 +319,23 @@ public class TestVariantObject {
         new Variant(ByteBuffer.wrap(constructObject(keys, fields, false)), 
constructMetadata(true, sortedKeys));
     VariantTestUtil.testVariant(value, v -> {
       VariantTestUtil.checkType(v, VariantUtil.OBJECT, Variant.Type.OBJECT);
-      Assert.assertEquals(1000, v.numObjectElements());
+      assertThat(v.numObjectElements()).isEqualTo(1000);
 
       for (int i = 0; i < 1000; i++) {
         String name = String.format("a%04d", i);
         VariantTestUtil.checkType(v.getFieldByKey(name), 
VariantUtil.PRIMITIVE, Variant.Type.STRING);
-        Assert.assertEquals(
-            new String(fields.get(name), 5, fields.get(name).length - 5),
-            v.getFieldByKey(name).getString());
+        assertThat(v.getFieldByKey(name).getString())
+            .isEqualTo(new String(fields.get(name), 5, fields.get(name).length 
- 5));
       }
     });
   }
 
   @Test
   public void testInvalidObject() {
-    try {
-      // An array header
-      Variant value = new Variant(ByteBuffer.wrap(new byte[] {0b10011}), 
VariantTestUtil.EMPTY_METADATA);
-      value.numObjectElements();
-      Assert.fail("Expected exception not thrown");
-    } catch (Exception e) {
-      Assert.assertEquals("Cannot read ARRAY value as OBJECT", e.getMessage());
-    }
+    Variant value = new Variant(ByteBuffer.wrap(new byte[] {0b10011}), 
VariantTestUtil.EMPTY_METADATA);
+    assertThatThrownBy(value::numObjectElements)
+        .isInstanceOf(IllegalArgumentException.class)
+        .hasMessage("Cannot read ARRAY value as OBJECT");
   }
 
   @Test
@@ -348,8 +344,9 @@ public class TestVariantObject {
     // buffer is only 3 bytes, so the offset table cannot fit.
     byte[] metadata = new byte[] {0x01, (byte) 200, 0x00};
     byte[] value = new byte[] {0x00};
-    Assert.assertThrows(
-        IllegalArgumentException.class, () -> new 
Variant(ByteBuffer.wrap(value), ByteBuffer.wrap(metadata)));
+    assertThatThrownBy(() -> new Variant(ByteBuffer.wrap(value), 
ByteBuffer.wrap(metadata)))
+        .isInstanceOf(IllegalArgumentException.class)
+        .hasMessage("variant metadata dictionary extends past buffer: 
dictSize=200");
   }
 
   @Test
@@ -358,8 +355,9 @@ public class TestVariantObject {
     // to guard against int overflow in the bound check arithmetic.
     byte[] metadata = new byte[] {(byte) 0xC1, (byte) 0xFF, (byte) 0xFF, 
(byte) 0xFF, (byte) 0x7F};
     byte[] value = new byte[] {0x00};
-    Assert.assertThrows(
-        IllegalArgumentException.class, () -> new 
Variant(ByteBuffer.wrap(value), ByteBuffer.wrap(metadata)));
+    assertThatThrownBy(() -> new Variant(ByteBuffer.wrap(value), 
ByteBuffer.wrap(metadata)))
+        .isInstanceOf(IllegalArgumentException.class)
+        .hasMessage("variant metadata dictionary extends past buffer: 
dictSize=2147483647");
   }
 
   @Test
@@ -368,8 +366,9 @@ public class TestVariantObject {
     // dictSize field itself can't be read.
     byte[] metadata = new byte[] {(byte) 0xC1, 0x00, 0x00};
     byte[] value = new byte[] {0x00};
-    Assert.assertThrows(
-        IllegalArgumentException.class, () -> new 
Variant(ByteBuffer.wrap(value), ByteBuffer.wrap(metadata)));
+    assertThatThrownBy(() -> new Variant(ByteBuffer.wrap(value), 
ByteBuffer.wrap(metadata)))
+        .isInstanceOf(IllegalArgumentException.class)
+        .hasMessage("variant metadata truncated: offsetSize=4");
   }
 
   @Test
@@ -403,8 +402,8 @@ public class TestVariantObject {
     // With a non-zero position and read-only buffer, the else-branch is taken,
     // which previously used the wrong offset.
     ImmutableMetadata immutableMetadata = new 
ImmutableMetadata(offsetMetadata);
-    Assert.assertEquals(0, immutableMetadata.getOrInsert("name"));
-    Assert.assertEquals(1, immutableMetadata.getOrInsert("age"));
+    assertThat(immutableMetadata.getOrInsert("name")).isEqualTo(0);
+    assertThat(immutableMetadata.getOrInsert("age")).isEqualTo(1);
   }
 
   @Test
@@ -423,12 +422,12 @@ public class TestVariantObject {
 
     // hasArray branch
     ImmutableMetadata writable = new ImmutableMetadata(metaBuf);
-    Assert.assertEquals(0, writable.getOrInsert("élève"));
-    Assert.assertEquals(1, writable.getOrInsert("中文"));
+    assertThat(writable.getOrInsert("élève")).isEqualTo(0);
+    assertThat(writable.getOrInsert("中文")).isEqualTo(1);
 
     // read-only branch (else path in getMetadataMap): asReadOnlyBuffer() 
makes isReadOnly() true
     ImmutableMetadata readOnly = new 
ImmutableMetadata(metaBuf.asReadOnlyBuffer());
-    Assert.assertEquals(0, readOnly.getOrInsert("élève"));
-    Assert.assertEquals(1, readOnly.getOrInsert("中文"));
+    assertThat(readOnly.getOrInsert("élève")).isEqualTo(0);
+    assertThat(readOnly.getOrInsert("中文")).isEqualTo(1);
   }
 }
diff --git 
a/parquet-variant/src/test/java/org/apache/parquet/variant/TestVariantObjectBuilder.java
 
b/parquet-variant/src/test/java/org/apache/parquet/variant/TestVariantObjectBuilder.java
index e07b55466..d0092d9ca 100644
--- 
a/parquet-variant/src/test/java/org/apache/parquet/variant/TestVariantObjectBuilder.java
+++ 
b/parquet-variant/src/test/java/org/apache/parquet/variant/TestVariantObjectBuilder.java
@@ -18,10 +18,12 @@
  */
 package org.apache.parquet.variant;
 
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
+
 import java.nio.ByteBuffer;
 import java.nio.ByteOrder;
 import java.util.UUID;
-import org.junit.Assert;
 import org.junit.Ignore;
 import org.junit.Test;
 import org.slf4j.Logger;
@@ -47,9 +49,9 @@ public class TestVariantObjectBuilder {
 
     VariantTestUtil.testVariant(builder.build(), v -> {
       VariantTestUtil.checkType(v, VariantUtil.OBJECT, Variant.Type.OBJECT);
-      Assert.assertEquals(1, v.numObjectElements());
+      assertThat(v.numObjectElements()).isEqualTo(1);
       VariantTestUtil.checkType(v.getFieldByKey("id"), VariantUtil.PRIMITIVE, 
Variant.Type.UUID);
-      Assert.assertEquals(expected, v.getFieldByKey("id").getUUID());
+      assertThat(v.getFieldByKey("id").getUUID()).isEqualTo(expected);
     });
   }
 
@@ -60,7 +62,7 @@ public class TestVariantObjectBuilder {
     b.endObject();
     VariantTestUtil.testVariant(b.build(), v -> {
       VariantTestUtil.checkType(v, VariantUtil.OBJECT, Variant.Type.OBJECT);
-      Assert.assertEquals(0, v.numObjectElements());
+      assertThat(v.numObjectElements()).isEqualTo(0);
     });
   }
 
@@ -75,10 +77,10 @@ public class TestVariantObjectBuilder {
     b.endObject();
     VariantTestUtil.testVariant(b.build(), v -> {
       VariantTestUtil.checkType(v, VariantUtil.OBJECT, Variant.Type.OBJECT);
-      Assert.assertEquals(1234, v.numObjectElements());
+      assertThat(v.numObjectElements()).isEqualTo(1234);
       for (int i = 0; i < 1234; i++) {
         VariantTestUtil.checkType(v.getFieldByKey("a" + i), 
VariantUtil.PRIMITIVE, Variant.Type.LONG);
-        Assert.assertEquals(i, v.getFieldByKey("a" + i).getLong());
+        assertThat(v.getFieldByKey("a" + i).getLong()).isEqualTo(i);
       }
     });
   }
@@ -116,28 +118,28 @@ public class TestVariantObjectBuilder {
 
     VariantTestUtil.testVariant(b.build(), v -> {
       VariantTestUtil.checkType(v, VariantUtil.OBJECT, Variant.Type.OBJECT);
-      Assert.assertEquals(4, v.numObjectElements());
+      assertThat(v.numObjectElements()).isEqualTo(4);
       VariantTestUtil.checkType(v.getFieldByKey("outer 1"), 
VariantUtil.PRIMITIVE, Variant.Type.BOOLEAN);
-      Assert.assertTrue(v.getFieldByKey("outer 1").getBoolean());
+      assertThat(v.getFieldByKey("outer 1").getBoolean()).isTrue();
       VariantTestUtil.checkType(v.getFieldByKey("outer 2"), 
VariantUtil.PRIMITIVE, Variant.Type.LONG);
-      Assert.assertEquals(1234567890, v.getFieldByKey("outer 2").getLong());
+      assertThat(v.getFieldByKey("outer 2").getLong()).isEqualTo(1234567890);
       VariantTestUtil.checkType(v.getFieldByKey("outer 3"), 
VariantUtil.OBJECT, Variant.Type.OBJECT);
 
       Variant nested = v.getFieldByKey("outer 3");
-      Assert.assertEquals(3, nested.numObjectElements());
+      assertThat(nested.numObjectElements()).isEqualTo(3);
       VariantTestUtil.checkType(nested.getFieldByKey("nested 1"), 
VariantUtil.OBJECT, Variant.Type.OBJECT);
-      Assert.assertEquals(0, nested.getFieldByKey("nested 
1").numObjectElements());
+      assertThat(nested.getFieldByKey("nested 
1").numObjectElements()).isEqualTo(0);
       VariantTestUtil.checkType(nested.getFieldByKey("nested 2"), 
VariantUtil.SHORT_STR, Variant.Type.STRING);
-      Assert.assertEquals("variant", nested.getFieldByKey("nested 
2").getString());
+      assertThat(nested.getFieldByKey("nested 
2").getString()).isEqualTo("variant");
       VariantTestUtil.checkType(nested.getFieldByKey("nested 3"), 
VariantUtil.ARRAY, Variant.Type.ARRAY);
-      Assert.assertEquals(1, nested.getFieldByKey("nested 
3").numArrayElements());
+      assertThat(nested.getFieldByKey("nested 
3").numArrayElements()).isEqualTo(1);
       VariantTestUtil.checkType(
           nested.getFieldByKey("nested 3").getElementAtIndex(0), 
VariantUtil.PRIMITIVE, Variant.Type.INT);
-      Assert.assertEquals(
-          321, nested.getFieldByKey("nested 3").getElementAtIndex(0).getInt());
+      assertThat(nested.getFieldByKey("nested 
3").getElementAtIndex(0).getInt())
+          .isEqualTo(321);
 
       VariantTestUtil.checkType(v.getFieldByKey("outer 4"), VariantUtil.ARRAY, 
Variant.Type.ARRAY);
-      Assert.assertEquals(0, v.getFieldByKey("outer 4").numArrayElements());
+      assertThat(v.getFieldByKey("outer 4").numArrayElements()).isEqualTo(0);
     });
   }
 
@@ -157,22 +159,16 @@ public class TestVariantObjectBuilder {
 
     VariantTestUtil.testVariant(b.build(), v -> {
       VariantTestUtil.checkType(v, VariantUtil.OBJECT, Variant.Type.OBJECT);
-      Assert.assertEquals(2, v.numObjectElements());
-      Assert.assertEquals(
-          ByteBuffer.wrap(new byte[] {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}),
-          v.getFieldByKey("as_binary").getBinary());
+      assertThat(v.numObjectElements()).isEqualTo(2);
+      assertThat(v.getFieldByKey("as_binary").getBinary())
+          .isEqualTo(ByteBuffer.wrap(new byte[] {0, 1, 2, 3, 4, 5, 6, 7, 8, 
9}));
       Variant nestedArray = v.getFieldByKey("in_array");
       VariantTestUtil.checkType(nestedArray, VariantUtil.ARRAY, 
Variant.Type.ARRAY);
-      Assert.assertEquals(3, nestedArray.numArrayElements());
-      Assert.assertEquals(
-          ByteBuffer.wrap(new byte[] {}),
-          nestedArray.getElementAtIndex(0).getBinary());
-      Assert.assertEquals(
-          ByteBuffer.wrap(new byte[] {10, 11, 12, 13, 14, 15, 16}),
-          nestedArray.getElementAtIndex(1).getBinary());
-      Assert.assertEquals(
-          ByteBuffer.wrap(new byte[] {17, 18}),
-          nestedArray.getElementAtIndex(2).getBinary());
+      assertThat(nestedArray.numArrayElements()).isEqualTo(3);
+      
assertThat(nestedArray.getElementAtIndex(0).getBinary()).isEqualTo(ByteBuffer.wrap(new
 byte[] {}));
+      assertThat(nestedArray.getElementAtIndex(1).getBinary())
+          .isEqualTo(ByteBuffer.wrap(new byte[] {10, 11, 12, 13, 14, 15, 16}));
+      
assertThat(nestedArray.getElementAtIndex(2).getBinary()).isEqualTo(ByteBuffer.wrap(new
 byte[] {17, 18}));
     });
   }
 
@@ -197,12 +193,12 @@ public class TestVariantObjectBuilder {
       for (int i = 1000; i >= 0; i--) {
         VariantTestUtil.checkType(curr, VariantUtil.OBJECT, 
Variant.Type.OBJECT);
         if (i == 0) {
-          Assert.assertEquals(0, curr.numObjectElements());
+          assertThat(curr.numObjectElements()).isEqualTo(0);
         } else {
-          Assert.assertEquals(2, curr.numObjectElements());
+          assertThat(curr.numObjectElements()).isEqualTo(2);
           VariantTestUtil.checkType(
               curr.getFieldByKey("key" + i), VariantUtil.SHORT_STR, 
Variant.Type.STRING);
-          Assert.assertEquals("str" + i, curr.getFieldByKey("key" + 
i).getString());
+          assertThat(curr.getFieldByKey("key" + 
i).getString()).isEqualTo("str" + i);
           curr = curr.getFieldByKey("duplicate");
         }
       }
@@ -222,13 +218,13 @@ public class TestVariantObjectBuilder {
 
     Variant v = b.build();
     VariantTestUtil.checkType(v, VariantUtil.OBJECT, Variant.Type.OBJECT);
-    Assert.assertEquals(3, v.numObjectElements());
+    assertThat(v.numObjectElements()).isEqualTo(3);
     VariantTestUtil.checkType(v.getFieldByKey("key1"), VariantUtil.PRIMITIVE, 
Variant.Type.STRING);
-    Assert.assertEquals(randomString, v.getFieldByKey("key1").getString());
+    assertThat(v.getFieldByKey("key1").getString()).isEqualTo(randomString);
     VariantTestUtil.checkType(v.getFieldByKey("key2"), VariantUtil.PRIMITIVE, 
Variant.Type.BOOLEAN);
-    Assert.assertTrue(v.getFieldByKey("key2").getBoolean());
+    assertThat(v.getFieldByKey("key2").getBoolean()).isTrue();
     VariantTestUtil.checkType(v.getFieldByKey("key3"), VariantUtil.PRIMITIVE, 
Variant.Type.LONG);
-    Assert.assertEquals(1234567890, v.getFieldByKey("key3").getLong());
+    assertThat(v.getFieldByKey("key3").getLong()).isEqualTo(1234567890);
   }
 
   @Test
@@ -260,12 +256,12 @@ public class TestVariantObjectBuilder {
 
     Variant v = b.build();
     VariantTestUtil.checkType(v, VariantUtil.OBJECT, Variant.Type.OBJECT);
-    Assert.assertEquals(numKeys, v.numObjectElements());
+    assertThat(v.numObjectElements()).isEqualTo(numKeys);
     // Only check a few keys, to avoid slowing down the test
     VariantTestUtil.checkType(v.getFieldByKey("k" + 0), VariantUtil.PRIMITIVE, 
Variant.Type.LONG);
-    Assert.assertEquals(0, v.getFieldByKey("k" + 0).getLong());
+    assertThat(v.getFieldByKey("k" + 0).getLong()).isEqualTo(0);
     VariantTestUtil.checkType(v.getFieldByKey("k" + (numKeys - 1)), 
VariantUtil.PRIMITIVE, Variant.Type.LONG);
-    Assert.assertEquals(numKeys - 1, v.getFieldByKey("k" + (numKeys - 
1)).getLong());
+    assertThat(v.getFieldByKey("k" + (numKeys - 
1)).getLong()).isEqualTo(numKeys - 1);
   }
 
   @Test
@@ -297,9 +293,9 @@ public class TestVariantObjectBuilder {
     objBuilder.appendLong(1);
     b.endObject();
     Variant v = b.build();
-    Assert.assertEquals(1, v.numObjectElements());
+    assertThat(v.numObjectElements()).isEqualTo(1);
     VariantTestUtil.checkType(v.getFieldByKey("duplicate"), 
VariantUtil.PRIMITIVE, Variant.Type.LONG);
-    Assert.assertEquals(1, v.getFieldByKey("duplicate").getLong());
+    assertThat(v.getFieldByKey("duplicate").getLong()).isEqualTo(1);
   }
 
   @Test
@@ -315,10 +311,10 @@ public class TestVariantObjectBuilder {
     b.endObject();
     VariantTestUtil.testVariant(b.build(), v -> {
       VariantTestUtil.checkType(v, VariantUtil.OBJECT, Variant.Type.OBJECT);
-      Assert.assertEquals(1, v.numObjectElements());
+      assertThat(v.numObjectElements()).isEqualTo(1);
       Variant variant = v.getFieldByKey("duplicate");
       VariantTestUtil.checkType(variant, VariantUtil.SHORT_STR, 
Variant.Type.STRING);
-      Assert.assertEquals("hello", variant.getString());
+      assertThat(variant.getString()).isEqualTo("hello");
     });
   }
 
@@ -335,10 +331,10 @@ public class TestVariantObjectBuilder {
     b.endObject();
     VariantTestUtil.testVariant(b.build(), v -> {
       VariantTestUtil.checkType(v, VariantUtil.OBJECT, Variant.Type.OBJECT);
-      Assert.assertEquals(1, v.numObjectElements());
+      assertThat(v.numObjectElements()).isEqualTo(1);
       Variant variant = v.getFieldByKey("duplicate");
       VariantTestUtil.checkType(variant, VariantUtil.PRIMITIVE, 
Variant.Type.INT);
-      Assert.assertEquals(1, variant.getInt());
+      assertThat(variant.getInt()).isEqualTo(1);
     });
   }
 
@@ -361,10 +357,10 @@ public class TestVariantObjectBuilder {
     b.endObject();
     VariantTestUtil.testVariant(b.build(), v -> {
       VariantTestUtil.checkType(v, VariantUtil.OBJECT, Variant.Type.OBJECT);
-      Assert.assertEquals(3, v.numObjectElements());
-      Assert.assertEquals("a-final", v.getFieldByKey("a").getString());
-      Assert.assertEquals(123456789L, v.getFieldByKey("b").getLong());
-      Assert.assertEquals("c-only", v.getFieldByKey("c").getString());
+      assertThat(v.numObjectElements()).isEqualTo(3);
+      assertThat(v.getFieldByKey("a").getString()).isEqualTo("a-final");
+      assertThat(v.getFieldByKey("b").getLong()).isEqualTo(123456789L);
+      assertThat(v.getFieldByKey("c").getString()).isEqualTo("c-only");
     });
   }
 
@@ -382,38 +378,32 @@ public class TestVariantObjectBuilder {
     objBuilder.appendString("22");
     b.endObject();
     Variant v = b.build();
-    Assert.assertEquals(4, v.numObjectElements());
+    assertThat(v.numObjectElements()).isEqualTo(4);
     VariantTestUtil.checkType(v.getFieldByKey("0"), VariantUtil.SHORT_STR, 
Variant.Type.STRING);
-    Assert.assertEquals("", v.getFieldByKey("0").getString());
+    assertThat(v.getFieldByKey("0").getString()).isEqualTo("");
     VariantTestUtil.checkType(v.getFieldByKey("1"), VariantUtil.SHORT_STR, 
Variant.Type.STRING);
-    Assert.assertEquals("1", v.getFieldByKey("1").getString());
+    assertThat(v.getFieldByKey("1").getString()).isEqualTo("1");
     VariantTestUtil.checkType(v.getFieldByKey("2"), VariantUtil.SHORT_STR, 
Variant.Type.STRING);
-    Assert.assertEquals("22", v.getFieldByKey("2").getString());
+    assertThat(v.getFieldByKey("2").getString()).isEqualTo("22");
     VariantTestUtil.checkType(v.getFieldByKey("3"), VariantUtil.SHORT_STR, 
Variant.Type.STRING);
-    Assert.assertEquals("333", v.getFieldByKey("3").getString());
+    assertThat(v.getFieldByKey("3").getString()).isEqualTo("333");
   }
 
   @Test
   public void testMissingEndObject() {
     VariantBuilder b = new VariantBuilder();
     b.startObject();
-    try {
-      b.build();
-      Assert.fail("Expected Exception when calling build() without 
endObject()");
-    } catch (Exception e) {
-      // expected
-    }
+    assertThatThrownBy(b::build)
+        .isInstanceOf(IllegalStateException.class)
+        .hasMessage("Cannot call build() while an object is being built. Must 
call endObject() first.");
   }
 
   @Test
   public void testMissingStartObject() {
     VariantBuilder b = new VariantBuilder();
-    try {
-      b.endObject();
-      Assert.fail("Expected Exception when calling endObject() without 
startObject()");
-    } catch (Exception e) {
-      // expected
-    }
+    assertThatThrownBy(b::endObject)
+        .isInstanceOf(IllegalStateException.class)
+        .hasMessage("Cannot call endObject() without calling startObject() 
first.");
   }
 
   @Test
@@ -421,33 +411,25 @@ public class TestVariantObjectBuilder {
     VariantBuilder b = new VariantBuilder();
     VariantObjectBuilder obj = b.startObject();
     obj.appendKey("a");
-    try {
-      b.endObject();
-      Assert.fail("Expected Exception when calling endObject() with mismatched 
keys and values");
-    } catch (Exception e) {
-      // expected
-    }
+    assertThatThrownBy(b::endObject)
+        .isInstanceOf(IllegalStateException.class)
+        .hasMessage("Number of object keys (1) do not match the number of 
values (0).");
 
     obj.appendInt(1);
     obj.appendKey("b");
-    try {
-      b.endObject();
-      Assert.fail("Expected Exception when calling endObject() with mismatched 
keys and values");
-    } catch (Exception e) {
-      // expected
-    }
+    assertThatThrownBy(b::endObject)
+        .isInstanceOf(IllegalStateException.class)
+        .hasMessage("Number of object keys (2) do not match the number of 
values (1).");
   }
 
   @Test
   public void testInvalidAppendDuringObjectAppend() {
     VariantBuilder b = new VariantBuilder();
     b.startObject();
-    try {
-      b.appendInt(1);
-      Assert.fail("Expected Exception when calling append() before 
endObject()");
-    } catch (Exception e) {
-      // expected
-    }
+    assertThatThrownBy(() -> b.appendInt(1))
+        .isInstanceOf(IllegalStateException.class)
+        .hasMessage(
+            "Cannot call append() methods while an object is being built. Must 
call endObject() first.");
   }
 
   @Test
@@ -455,24 +437,18 @@ public class TestVariantObjectBuilder {
     VariantBuilder b = new VariantBuilder();
     VariantObjectBuilder obj = b.startObject();
     obj.appendKey("a");
-    try {
-      obj.appendKey("a");
-      Assert.fail("Expected Exception when calling appendKey() multiple times 
without appending a value");
-    } catch (Exception e) {
-      // expected
-    }
+    assertThatThrownBy(() -> obj.appendKey("a"))
+        .isInstanceOf(IllegalStateException.class)
+        .hasMessage("Cannot call appendKey() before appending a value for the 
previous key.");
   }
 
   @Test
   public void testNoAppendKey() {
     VariantBuilder b = new VariantBuilder();
     VariantObjectBuilder obj = b.startObject();
-    try {
-      obj.appendInt(1);
-      Assert.fail("Expected Exception when appending a value, before appending 
a key");
-    } catch (Exception e) {
-      // expected
-    }
+    assertThatThrownBy(() -> obj.appendInt(1))
+        .isInstanceOf(IllegalStateException.class)
+        .hasMessage("Cannot append an object value before calling 
appendKey()");
   }
 
   @Test
@@ -481,24 +457,18 @@ public class TestVariantObjectBuilder {
     VariantObjectBuilder obj = b.startObject();
     obj.appendKey("a");
     obj.appendInt(1);
-    try {
-      obj.appendInt(1);
-      Assert.fail("Expected Exception when appending a value, before appending 
a key");
-    } catch (Exception e) {
-      // expected
-    }
+    assertThatThrownBy(() -> obj.appendInt(1))
+        .isInstanceOf(IllegalStateException.class)
+        .hasMessage("Cannot append an object value before calling 
appendKey()");
   }
 
   @Test
   public void testStartObjectEndArray() {
     VariantBuilder b = new VariantBuilder();
     VariantObjectBuilder obj = b.startObject();
-    try {
-      obj.endArray();
-      Assert.fail("Expected Exception when calling endArray() while building 
object");
-    } catch (Exception e) {
-      // expected
-    }
+    assertThatThrownBy(obj::endArray)
+        .isInstanceOf(IllegalStateException.class)
+        .hasMessage("Cannot call endArray() without calling startArray() 
first.");
   }
 
   @Test
@@ -507,12 +477,9 @@ public class TestVariantObjectBuilder {
     VariantObjectBuilder obj = b.startObject();
     obj.appendKey("outer");
     obj.startObject();
-    try {
-      b.endObject();
-      Assert.fail("Expected Exception when calling endObject() with an open 
nested object");
-    } catch (Exception e) {
-      // expected
-    }
+    assertThatThrownBy(b::endObject)
+        .isInstanceOf(IllegalStateException.class)
+        .hasMessage("Cannot call endObject() while a nested object/array is 
still open.");
   }
 
   @Test
@@ -522,12 +489,9 @@ public class TestVariantObjectBuilder {
     obj.appendKey("outer");
     VariantObjectBuilder nested = obj.startObject();
     nested.appendKey("nested");
-    try {
-      b.endObject();
-      Assert.fail("Expected Exception when calling endObject() with an open 
nested object");
-    } catch (Exception e) {
-      // expected
-    }
+    assertThatThrownBy(b::endObject)
+        .isInstanceOf(IllegalStateException.class)
+        .hasMessage("Cannot call endObject() while a nested object/array is 
still open.");
   }
 
   @Test
@@ -538,12 +502,9 @@ public class TestVariantObjectBuilder {
     VariantObjectBuilder nested = obj.startObject();
     nested.appendKey("nested");
     nested.appendInt(1);
-    try {
-      b.endObject();
-      Assert.fail("Expected Exception when calling endObject() with an open 
nested object");
-    } catch (Exception e) {
-      // expected
-    }
+    assertThatThrownBy(b::endObject)
+        .isInstanceOf(IllegalStateException.class)
+        .hasMessage("Cannot call endObject() while a nested object/array is 
still open.");
   }
 
   @Test
@@ -552,12 +513,9 @@ public class TestVariantObjectBuilder {
     VariantObjectBuilder obj = b.startObject();
     obj.appendKey("outer");
     obj.startArray();
-    try {
-      b.endObject();
-      Assert.fail("Expected Exception when calling endObject() with an open 
nested array");
-    } catch (Exception e) {
-      // expected
-    }
+    assertThatThrownBy(b::endObject)
+        .isInstanceOf(IllegalStateException.class)
+        .hasMessage("Cannot call endObject() while a nested object/array is 
still open.");
   }
 
   @Test
@@ -567,11 +525,8 @@ public class TestVariantObjectBuilder {
     obj.appendKey("outer");
     VariantArrayBuilder nested = obj.startArray();
     nested.appendInt(1);
-    try {
-      b.endObject();
-      Assert.fail("Expected Exception when calling endObject() with an open 
nested array");
-    } catch (Exception e) {
-      // expected
-    }
+    assertThatThrownBy(b::endObject)
+        .isInstanceOf(IllegalStateException.class)
+        .hasMessage("Cannot call endObject() while a nested object/array is 
still open.");
   }
 }
diff --git 
a/parquet-variant/src/test/java/org/apache/parquet/variant/TestVariantParseJson.java
 
b/parquet-variant/src/test/java/org/apache/parquet/variant/TestVariantParseJson.java
index fc1a24ba2..5d6d24340 100644
--- 
a/parquet-variant/src/test/java/org/apache/parquet/variant/TestVariantParseJson.java
+++ 
b/parquet-variant/src/test/java/org/apache/parquet/variant/TestVariantParseJson.java
@@ -18,11 +18,14 @@
  */
 package org.apache.parquet.variant;
 
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
+import static org.assertj.core.api.Assertions.within;
+
 import com.fasterxml.jackson.core.JsonFactory;
 import com.fasterxml.jackson.core.JsonParser;
 import java.io.IOException;
 import java.math.BigDecimal;
-import org.junit.Assert;
 import org.junit.Test;
 
 public class TestVariantParseJson {
@@ -30,73 +33,71 @@ public class TestVariantParseJson {
   @Test
   public void testParseNull() throws IOException {
     Variant v = VariantJsonParser.parseJson("null");
-    Assert.assertEquals(Variant.Type.NULL, v.getType());
+    assertThat(v.getType()).isEqualTo(Variant.Type.NULL);
   }
 
   @Test
   public void testParseTrue() throws IOException {
     Variant v = VariantJsonParser.parseJson("true");
-    Assert.assertEquals(Variant.Type.BOOLEAN, v.getType());
-    Assert.assertTrue(v.getBoolean());
+    assertThat(v.getType()).isEqualTo(Variant.Type.BOOLEAN);
+    assertThat(v.getBoolean()).isTrue();
   }
 
   @Test
   public void testParseFalse() throws IOException {
     Variant v = VariantJsonParser.parseJson("false");
-    Assert.assertEquals(Variant.Type.BOOLEAN, v.getType());
-    Assert.assertFalse(v.getBoolean());
+    assertThat(v.getType()).isEqualTo(Variant.Type.BOOLEAN);
+    assertThat(v.getBoolean()).isFalse();
   }
 
   @Test
   public void testParseString() throws IOException {
     Variant v = VariantJsonParser.parseJson("\"hello world\"");
-    Assert.assertEquals(Variant.Type.STRING, v.getType());
-    Assert.assertEquals("hello world", v.getString());
+    assertThat(v.getType()).isEqualTo(Variant.Type.STRING);
+    assertThat(v.getString()).isEqualTo("hello world");
   }
 
   @Test
   public void testParseSmallInteger() throws IOException {
     Variant v = VariantJsonParser.parseJson("42");
-    Assert.assertEquals(Variant.Type.BYTE, v.getType());
-    Assert.assertEquals(42, v.getLong());
+    assertThat(v.getType()).isEqualTo(Variant.Type.BYTE);
+    assertThat(v.getLong()).isEqualTo(42);
   }
 
   @Test
   public void testParseShortInteger() throws IOException {
     Variant v = VariantJsonParser.parseJson("1000");
-    Assert.assertEquals(Variant.Type.SHORT, v.getType());
-    Assert.assertEquals(1000, v.getLong());
+    assertThat(v.getType()).isEqualTo(Variant.Type.SHORT);
+    assertThat(v.getLong()).isEqualTo(1000);
   }
 
   @Test
   public void testParseIntInteger() throws IOException {
     Variant v = VariantJsonParser.parseJson("100000");
-    Assert.assertEquals(Variant.Type.INT, v.getType());
-    Assert.assertEquals(100000, v.getLong());
+    assertThat(v.getType()).isEqualTo(Variant.Type.INT);
+    assertThat(v.getLong()).isEqualTo(100000);
   }
 
   @Test
   public void testParseLongInteger() throws IOException {
     Variant v = VariantJsonParser.parseJson("9999999999");
-    Assert.assertEquals(Variant.Type.LONG, v.getType());
-    Assert.assertEquals(9999999999L, v.getLong());
+    assertThat(v.getType()).isEqualTo(Variant.Type.LONG);
+    assertThat(v.getLong()).isEqualTo(9999999999L);
   }
 
   @Test
   public void testParseDecimalFloat() throws IOException {
     Variant v = VariantJsonParser.parseJson("3.14");
     Variant.Type type = v.getType();
-    Assert.assertTrue(
-        "Expected decimal type, got " + type,
-        type == Variant.Type.DECIMAL4 || type == Variant.Type.DECIMAL8 || type 
== Variant.Type.DECIMAL16);
-    Assert.assertEquals(0, new BigDecimal("3.14").compareTo(v.getDecimal()));
+    assertThat(type).isIn(Variant.Type.DECIMAL4, Variant.Type.DECIMAL8, 
Variant.Type.DECIMAL16);
+    assertThat(v.getDecimal()).isEqualByComparingTo(new BigDecimal("3.14"));
   }
 
   @Test
   public void testParseScientificNotationDouble() throws IOException {
     Variant v = VariantJsonParser.parseJson("1.5e10");
-    Assert.assertEquals(Variant.Type.DOUBLE, v.getType());
-    Assert.assertEquals(1.5e10, v.getDouble(), 0.001);
+    assertThat(v.getType()).isEqualTo(Variant.Type.DOUBLE);
+    assertThat(v.getDouble()).isCloseTo(1.5e10, within(0.001));
   }
 
   @Test
@@ -104,105 +105,102 @@ public class TestVariantParseJson {
     String bigNum = "99999999999999999999";
     Variant v = VariantJsonParser.parseJson(bigNum);
     Variant.Type type = v.getType();
-    Assert.assertTrue(
-        "Expected decimal type for big integer, got " + type,
-        type == Variant.Type.DECIMAL4 || type == Variant.Type.DECIMAL8 || type 
== Variant.Type.DECIMAL16);
-    Assert.assertEquals(0, new BigDecimal(bigNum).compareTo(v.getDecimal()));
+    assertThat(type).isIn(Variant.Type.DECIMAL4, Variant.Type.DECIMAL8, 
Variant.Type.DECIMAL16);
+    assertThat(v.getDecimal()).isEqualByComparingTo(new BigDecimal(bigNum));
   }
 
   @Test
   public void testParseNegativeInteger() throws IOException {
     Variant v = VariantJsonParser.parseJson("-100");
-    Assert.assertEquals(-100, v.getLong());
+    assertThat(v.getLong()).isEqualTo(-100);
   }
 
   @Test
   public void testParseNegativeDecimal() throws IOException {
     Variant v = VariantJsonParser.parseJson("-99.99");
-    Assert.assertEquals(0, new BigDecimal("-99.99").compareTo(v.getDecimal()));
+    assertThat(v.getDecimal()).isEqualByComparingTo(new BigDecimal("-99.99"));
   }
 
   @Test
   public void testParseZero() throws IOException {
     Variant v = VariantJsonParser.parseJson("0");
-    Assert.assertEquals(Variant.Type.BYTE, v.getType());
-    Assert.assertEquals(0, v.getLong());
+    assertThat(v.getType()).isEqualTo(Variant.Type.BYTE);
+    assertThat(v.getLong()).isEqualTo(0);
   }
 
   @Test
   public void testParseEmptyObject() throws IOException {
     Variant v = VariantJsonParser.parseJson("{}");
-    Assert.assertEquals(Variant.Type.OBJECT, v.getType());
-    Assert.assertEquals(0, v.numObjectElements());
+    assertThat(v.getType()).isEqualTo(Variant.Type.OBJECT);
+    assertThat(v.numObjectElements()).isEqualTo(0);
   }
 
   @Test
   public void testParseSimpleObject() throws IOException {
     Variant v = VariantJsonParser.parseJson("{\"name\":\"John\",\"age\":30}");
-    Assert.assertEquals(Variant.Type.OBJECT, v.getType());
-    Assert.assertEquals(2, v.numObjectElements());
-    Assert.assertEquals("John", v.getFieldByKey("name").getString());
-    Assert.assertEquals(30, v.getFieldByKey("age").getLong());
+    assertThat(v.getType()).isEqualTo(Variant.Type.OBJECT);
+    assertThat(v.numObjectElements()).isEqualTo(2);
+    assertThat(v.getFieldByKey("name").getString()).isEqualTo("John");
+    assertThat(v.getFieldByKey("age").getLong()).isEqualTo(30);
   }
 
   @Test
   public void testParseNestedObject() throws IOException {
     Variant v = 
VariantJsonParser.parseJson("{\"user\":{\"id\":100,\"country\":\"US\"},\"active\":true}");
-    Assert.assertEquals(Variant.Type.OBJECT, v.getType());
+    assertThat(v.getType()).isEqualTo(Variant.Type.OBJECT);
     Variant user = v.getFieldByKey("user");
-    Assert.assertEquals(Variant.Type.OBJECT, user.getType());
-    Assert.assertEquals(100, user.getFieldByKey("id").getLong());
-    Assert.assertEquals("US", user.getFieldByKey("country").getString());
-    Assert.assertTrue(v.getFieldByKey("active").getBoolean());
+    assertThat(user.getType()).isEqualTo(Variant.Type.OBJECT);
+    assertThat(user.getFieldByKey("id").getLong()).isEqualTo(100);
+    assertThat(user.getFieldByKey("country").getString()).isEqualTo("US");
+    assertThat(v.getFieldByKey("active").getBoolean()).isTrue();
   }
 
   @Test
   public void testParseEmptyArray() throws IOException {
     Variant v = VariantJsonParser.parseJson("[]");
-    Assert.assertEquals(Variant.Type.ARRAY, v.getType());
-    Assert.assertEquals(0, v.numArrayElements());
+    assertThat(v.getType()).isEqualTo(Variant.Type.ARRAY);
+    assertThat(v.numArrayElements()).isEqualTo(0);
   }
 
   @Test
   public void testParseSimpleArray() throws IOException {
     Variant v = VariantJsonParser.parseJson("[1,2,3,\"four\"]");
-    Assert.assertEquals(Variant.Type.ARRAY, v.getType());
-    Assert.assertEquals(4, v.numArrayElements());
-    Assert.assertEquals(1, v.getElementAtIndex(0).getLong());
-    Assert.assertEquals(2, v.getElementAtIndex(1).getLong());
-    Assert.assertEquals(3, v.getElementAtIndex(2).getLong());
-    Assert.assertEquals("four", v.getElementAtIndex(3).getString());
+    assertThat(v.getType()).isEqualTo(Variant.Type.ARRAY);
+    assertThat(v.numArrayElements()).isEqualTo(4);
+    assertThat(v.getElementAtIndex(0).getLong()).isEqualTo(1);
+    assertThat(v.getElementAtIndex(1).getLong()).isEqualTo(2);
+    assertThat(v.getElementAtIndex(2).getLong()).isEqualTo(3);
+    assertThat(v.getElementAtIndex(3).getString()).isEqualTo("four");
   }
 
   @Test
   public void testParseNestedArray() throws IOException {
     Variant v = VariantJsonParser.parseJson("[[1,2],[3,4]]");
-    Assert.assertEquals(Variant.Type.ARRAY, v.getType());
-    Assert.assertEquals(2, v.numArrayElements());
+    assertThat(v.getType()).isEqualTo(Variant.Type.ARRAY);
+    assertThat(v.numArrayElements()).isEqualTo(2);
     Variant inner = v.getElementAtIndex(0);
-    Assert.assertEquals(Variant.Type.ARRAY, inner.getType());
-    Assert.assertEquals(1, inner.getElementAtIndex(0).getLong());
-    Assert.assertEquals(2, inner.getElementAtIndex(1).getLong());
+    assertThat(inner.getType()).isEqualTo(Variant.Type.ARRAY);
+    assertThat(inner.getElementAtIndex(0).getLong()).isEqualTo(1);
+    assertThat(inner.getElementAtIndex(1).getLong()).isEqualTo(2);
   }
 
   @Test
   public void testParseMixedArray() throws IOException {
     Variant v = VariantJsonParser.parseJson("[1,\"two\",true,null,3.14]");
-    Assert.assertEquals(Variant.Type.ARRAY, v.getType());
-    Assert.assertEquals(5, v.numArrayElements());
-    Assert.assertEquals(1, v.getElementAtIndex(0).getLong());
-    Assert.assertEquals("two", v.getElementAtIndex(1).getString());
-    Assert.assertTrue(v.getElementAtIndex(2).getBoolean());
-    Assert.assertEquals(Variant.Type.NULL, v.getElementAtIndex(3).getType());
-    Assert.assertEquals(
-        0, new 
BigDecimal("3.14").compareTo(v.getElementAtIndex(4).getDecimal()));
+    assertThat(v.getType()).isEqualTo(Variant.Type.ARRAY);
+    assertThat(v.numArrayElements()).isEqualTo(5);
+    assertThat(v.getElementAtIndex(0).getLong()).isEqualTo(1);
+    assertThat(v.getElementAtIndex(1).getString()).isEqualTo("two");
+    assertThat(v.getElementAtIndex(2).getBoolean()).isTrue();
+    assertThat(v.getElementAtIndex(3).getType()).isEqualTo(Variant.Type.NULL);
+    assertThat(v.getElementAtIndex(4).getDecimal()).isEqualByComparingTo(new 
BigDecimal("3.14"));
   }
 
   @Test
   public void testParseObjectWithNullValue() throws IOException {
     Variant v = VariantJsonParser.parseJson("{\"key\":null}");
-    Assert.assertEquals(Variant.Type.OBJECT, v.getType());
-    Assert.assertEquals(Variant.Type.NULL, v.getFieldByKey("key").getType());
+    assertThat(v.getType()).isEqualTo(Variant.Type.OBJECT);
+    assertThat(v.getFieldByKey("key").getType()).isEqualTo(Variant.Type.NULL);
   }
 
   @Test
@@ -212,59 +210,59 @@ public class TestVariantParseJson {
         + "{\"eType\":\"purchase\",\"amount\":99.99}"
         + "]}";
     Variant v = VariantJsonParser.parseJson(json);
-    Assert.assertEquals(Variant.Type.OBJECT, v.getType());
-    Assert.assertEquals(12345, v.getFieldByKey("userId").getLong());
+    assertThat(v.getType()).isEqualTo(Variant.Type.OBJECT);
+    assertThat(v.getFieldByKey("userId").getLong()).isEqualTo(12345);
     Variant events = v.getFieldByKey("events");
-    Assert.assertEquals(Variant.Type.ARRAY, events.getType());
-    Assert.assertEquals(2, events.numArrayElements());
-    Assert.assertEquals(
-        "login", 
events.getElementAtIndex(0).getFieldByKey("eType").getString());
-    Assert.assertEquals(
-        0,
-        new BigDecimal("99.99")
-            .compareTo(events.getElementAtIndex(1)
-                .getFieldByKey("amount")
-                .getDecimal()));
+    assertThat(events.getType()).isEqualTo(Variant.Type.ARRAY);
+    assertThat(events.numArrayElements()).isEqualTo(2);
+    assertThat(events.getElementAtIndex(0).getFieldByKey("eType").getString())
+        .isEqualTo("login");
+    
assertThat(events.getElementAtIndex(1).getFieldByKey("amount").getDecimal())
+        .isEqualByComparingTo(new BigDecimal("99.99"));
   }
 
   @Test
   public void testParseEmptyString() throws IOException {
     Variant v = VariantJsonParser.parseJson("\"\"");
-    Assert.assertEquals(Variant.Type.STRING, v.getType());
-    Assert.assertEquals("", v.getString());
+    assertThat(v.getType()).isEqualTo(Variant.Type.STRING);
+    assertThat(v.getString()).isEqualTo("");
   }
 
   @Test
   public void testParseUnicodeString() throws IOException {
     Variant v = VariantJsonParser.parseJson("\"\\u00e9l\\u00e8ve\"");
-    Assert.assertEquals(Variant.Type.STRING, v.getType());
-    Assert.assertEquals("\u00e9l\u00e8ve", v.getString());
+    assertThat(v.getType()).isEqualTo(Variant.Type.STRING);
+    assertThat(v.getString()).isEqualTo("\u00e9l\u00e8ve");
   }
 
   @Test
   public void testParseUnicodeKey() throws IOException {
     Variant v = VariantJsonParser.parseJson("{\"\\u00e9l\\u00e8ve\": 42}");
-    Assert.assertEquals(Variant.Type.OBJECT, v.getType());
+    assertThat(v.getType()).isEqualTo(Variant.Type.OBJECT);
     Variant value = v.getFieldByKey("élève");
-    Assert.assertNotNull(value);
-    Assert.assertEquals(42, value.getInt());
+    assertThat(value).isNotNull();
+    assertThat(value.getInt()).isEqualTo(42);
   }
 
   @Test
   public void testParseEscapedString() throws IOException {
     Variant v = VariantJsonParser.parseJson("\"hello\\nworld\"");
-    Assert.assertEquals(Variant.Type.STRING, v.getType());
-    Assert.assertEquals("hello\nworld", v.getString());
+    assertThat(v.getType()).isEqualTo(Variant.Type.STRING);
+    assertThat(v.getString()).isEqualTo("hello\nworld");
   }
 
-  @Test(expected = IOException.class)
-  public void testParseMalformedJson() throws IOException {
-    VariantJsonParser.parseJson("{invalid");
+  @Test
+  public void testParseMalformedJson() {
+    assertThatThrownBy(() -> VariantJsonParser.parseJson("{invalid"))
+        .isInstanceOf(IOException.class)
+        .hasMessageContaining("was expecting double-quote to start field 
name");
   }
 
-  @Test(expected = IOException.class)
-  public void testParseIncompleteObject() throws IOException {
-    VariantJsonParser.parseJson("{\"key\":");
+  @Test
+  public void testParseIncompleteObject() {
+    assertThatThrownBy(() -> VariantJsonParser.parseJson("{\"key\":"))
+        .isInstanceOf(IOException.class)
+        .hasMessageContaining("Unexpected end-of-input within/between Object 
entries");
   }
 
   @Test
@@ -273,17 +271,17 @@ public class TestVariantParseJson {
     try (JsonParser parser = factory.createParser("{\"a\":1}")) {
       parser.nextToken();
       Variant v = VariantJsonParser.parseJson(parser);
-      Assert.assertEquals(Variant.Type.OBJECT, v.getType());
-      Assert.assertEquals(1, v.getFieldByKey("a").getLong());
+      assertThat(v.getType()).isEqualTo(Variant.Type.OBJECT);
+      assertThat(v.getFieldByKey("a").getLong()).isEqualTo(1);
     }
   }
 
   @Test
   public void testParseDuplicateKeysLastWins() throws IOException {
     Variant v = VariantJsonParser.parseJson("{\"k\":1,\"k\":2}");
-    Assert.assertEquals(Variant.Type.OBJECT, v.getType());
-    Assert.assertEquals(1, v.numObjectElements());
-    Assert.assertEquals(2, v.getFieldByKey("k").getLong());
+    assertThat(v.getType()).isEqualTo(Variant.Type.OBJECT);
+    assertThat(v.numObjectElements()).isEqualTo(1);
+    assertThat(v.getFieldByKey("k").getLong()).isEqualTo(2);
   }
 
   @Test
@@ -298,35 +296,41 @@ public class TestVariantParseJson {
     }
     Variant v = VariantJsonParser.parseJson(sb.toString());
     for (int i = 0; i < 20; i++) {
-      Assert.assertEquals(Variant.Type.OBJECT, v.getType());
+      assertThat(v.getType()).isEqualTo(Variant.Type.OBJECT);
       v = v.getFieldByKey("n");
     }
-    Assert.assertEquals(42, v.getLong());
+    assertThat(v.getLong()).isEqualTo(42);
   }
 
   @Test
   public void testObjectKeysSorted() throws IOException {
     Variant v = VariantJsonParser.parseJson("{\"c\":3,\"a\":1,\"b\":2}");
-    Assert.assertEquals(Variant.Type.OBJECT, v.getType());
-    Assert.assertEquals(3, v.numObjectElements());
-    Assert.assertEquals("a", v.getFieldAtIndex(0).key);
-    Assert.assertEquals("b", v.getFieldAtIndex(1).key);
-    Assert.assertEquals("c", v.getFieldAtIndex(2).key);
+    assertThat(v.getType()).isEqualTo(Variant.Type.OBJECT);
+    assertThat(v.numObjectElements()).isEqualTo(3);
+    assertThat(v.getFieldAtIndex(0).key).isEqualTo("a");
+    assertThat(v.getFieldAtIndex(1).key).isEqualTo("b");
+    assertThat(v.getFieldAtIndex(2).key).isEqualTo("c");
   }
 
-  @Test(expected = IOException.class)
-  public void testParseEmptyInput() throws IOException {
-    VariantJsonParser.parseJson("");
+  @Test
+  public void testParseEmptyInput() {
+    assertThatThrownBy(() -> VariantJsonParser.parseJson(""))
+        .isInstanceOf(IOException.class)
+        .hasMessageContaining("Unexpected null token");
   }
 
-  @Test(expected = IOException.class)
-  public void testParseNotJson() throws IOException {
-    VariantJsonParser.parseJson("not json at all");
+  @Test
+  public void testParseNotJson() {
+    assertThatThrownBy(() -> VariantJsonParser.parseJson("not json at all"))
+        .isInstanceOf(IOException.class)
+        .hasMessageContaining("Unrecognized token 'not'");
   }
 
-  @Test(expected = IOException.class)
-  public void testParseIncompleteArray() throws IOException {
-    VariantJsonParser.parseJson("[1, 2,");
+  @Test
+  public void testParseIncompleteArray() {
+    assertThatThrownBy(() -> VariantJsonParser.parseJson("[1, 2,"))
+        .isInstanceOf(IOException.class)
+        .hasMessageContaining("Unexpected end-of-input within/between Array 
entries");
   }
 
   @Test
@@ -342,11 +346,11 @@ public class TestVariantParseJson {
     sb.append("}");
 
     Variant v = VariantJsonParser.parseJson(sb.toString());
-    Assert.assertEquals(Variant.Type.OBJECT, v.getType());
-    Assert.assertEquals(numKeys, v.numObjectElements());
+    assertThat(v.getType()).isEqualTo(Variant.Type.OBJECT);
+    assertThat(v.numObjectElements()).isEqualTo(numKeys);
     // Spot-check a few values
-    Assert.assertEquals(0, v.getFieldByKey("key0").getLong());
-    Assert.assertEquals(500, v.getFieldByKey("key500").getLong());
-    Assert.assertEquals(999, v.getFieldByKey("key999").getLong());
+    assertThat(v.getFieldByKey("key0").getLong()).isEqualTo(0);
+    assertThat(v.getFieldByKey("key500").getLong()).isEqualTo(500);
+    assertThat(v.getFieldByKey("key999").getLong()).isEqualTo(999);
   }
 }
diff --git 
a/parquet-variant/src/test/java/org/apache/parquet/variant/TestVariantScalar.java
 
b/parquet-variant/src/test/java/org/apache/parquet/variant/TestVariantScalar.java
index 6219d7d08..ef7b4ae5d 100644
--- 
a/parquet-variant/src/test/java/org/apache/parquet/variant/TestVariantScalar.java
+++ 
b/parquet-variant/src/test/java/org/apache/parquet/variant/TestVariantScalar.java
@@ -18,6 +18,9 @@
  */
 package org.apache.parquet.variant;
 
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
+
 import java.math.BigDecimal;
 import java.nio.ByteBuffer;
 import java.time.Instant;
@@ -25,7 +28,6 @@ import java.time.LocalDate;
 import java.time.LocalTime;
 import java.time.temporal.ChronoUnit;
 import java.util.UUID;
-import org.junit.Assert;
 import org.junit.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -46,7 +48,7 @@ public class TestVariantScalar {
         ByteBuffer.wrap(new byte[] {VariantTestUtil.primitiveHeader(1)}), 
VariantTestUtil.EMPTY_METADATA);
     VariantTestUtil.testVariant(value, v -> {
       VariantTestUtil.checkType(v, VariantUtil.PRIMITIVE, 
Variant.Type.BOOLEAN);
-      Assert.assertTrue(v.getBoolean());
+      assertThat(v.getBoolean()).isTrue();
     });
   }
 
@@ -56,7 +58,7 @@ public class TestVariantScalar {
         ByteBuffer.wrap(new byte[] {VariantTestUtil.primitiveHeader(2)}), 
VariantTestUtil.EMPTY_METADATA);
     VariantTestUtil.testVariant(value, v -> {
       VariantTestUtil.checkType(v, VariantUtil.PRIMITIVE, 
Variant.Type.BOOLEAN);
-      Assert.assertFalse(v.getBoolean());
+      assertThat(v.getBoolean()).isFalse();
     });
   }
 
@@ -77,7 +79,7 @@ public class TestVariantScalar {
         VariantTestUtil.EMPTY_METADATA);
     VariantTestUtil.testVariant(value, v -> {
       VariantTestUtil.checkType(v, VariantUtil.PRIMITIVE, Variant.Type.LONG);
-      Assert.assertEquals(1234567890987654321L, v.getLong());
+      assertThat(v.getLong()).isEqualTo(1234567890987654321L);
     });
   }
 
@@ -98,7 +100,7 @@ public class TestVariantScalar {
         VariantTestUtil.EMPTY_METADATA);
     VariantTestUtil.testVariant(value, v -> {
       VariantTestUtil.checkType(v, VariantUtil.PRIMITIVE, Variant.Type.LONG);
-      Assert.assertEquals(-1L, v.getLong());
+      assertThat(v.getLong()).isEqualTo(-1L);
     });
   }
 
@@ -109,7 +111,7 @@ public class TestVariantScalar {
         VariantTestUtil.EMPTY_METADATA);
     VariantTestUtil.testVariant(value, v -> {
       VariantTestUtil.checkType(v, VariantUtil.PRIMITIVE, Variant.Type.INT);
-      Assert.assertEquals(1234567890, v.getInt());
+      assertThat(v.getInt()).isEqualTo(1234567890);
     });
   }
 
@@ -122,7 +124,7 @@ public class TestVariantScalar {
         VariantTestUtil.EMPTY_METADATA);
     VariantTestUtil.testVariant(value, v -> {
       VariantTestUtil.checkType(v, VariantUtil.PRIMITIVE, Variant.Type.INT);
-      Assert.assertEquals(-1, v.getInt());
+      assertThat(v.getInt()).isEqualTo(-1);
     });
   }
 
@@ -133,7 +135,7 @@ public class TestVariantScalar {
         VariantTestUtil.EMPTY_METADATA);
     VariantTestUtil.testVariant(value, v -> {
       VariantTestUtil.checkType(v, VariantUtil.PRIMITIVE, Variant.Type.SHORT);
-      Assert.assertEquals((short) 1234, v.getShort());
+      assertThat(v.getShort()).isEqualTo((short) 1234);
     });
   }
 
@@ -144,7 +146,7 @@ public class TestVariantScalar {
         VariantTestUtil.EMPTY_METADATA);
     VariantTestUtil.testVariant(value, v -> {
       VariantTestUtil.checkType(v, VariantUtil.PRIMITIVE, Variant.Type.SHORT);
-      Assert.assertEquals((short) -1, v.getShort());
+      assertThat(v.getShort()).isEqualTo((short) -1);
     });
   }
 
@@ -154,7 +156,7 @@ public class TestVariantScalar {
         ByteBuffer.wrap(new byte[] {VariantTestUtil.primitiveHeader(3), 34}), 
VariantTestUtil.EMPTY_METADATA);
     VariantTestUtil.testVariant(value, v -> {
       VariantTestUtil.checkType(v, VariantUtil.PRIMITIVE, Variant.Type.BYTE);
-      Assert.assertEquals((byte) 34, v.getByte());
+      assertThat(v.getByte()).isEqualTo((byte) 34);
     });
   }
 
@@ -165,7 +167,7 @@ public class TestVariantScalar {
         VariantTestUtil.EMPTY_METADATA);
     VariantTestUtil.testVariant(value, v -> {
       VariantTestUtil.checkType(v, VariantUtil.PRIMITIVE, Variant.Type.BYTE);
-      Assert.assertEquals((byte) -1, v.getByte());
+      assertThat(v.getByte()).isEqualTo((byte) -1);
     });
   }
 
@@ -176,7 +178,7 @@ public class TestVariantScalar {
         VariantTestUtil.EMPTY_METADATA);
     VariantTestUtil.testVariant(value, v -> {
       VariantTestUtil.checkType(v, VariantUtil.PRIMITIVE, Variant.Type.FLOAT);
-      Assert.assertEquals(Float.intBitsToFloat(1234567890), v.getFloat(), 0);
+      assertThat(v.getFloat()).isEqualTo(Float.intBitsToFloat(1234567890));
     });
   }
 
@@ -187,7 +189,7 @@ public class TestVariantScalar {
         VariantTestUtil.EMPTY_METADATA);
     VariantTestUtil.testVariant(value, v -> {
       VariantTestUtil.checkType(v, VariantUtil.PRIMITIVE, Variant.Type.FLOAT);
-      Assert.assertEquals(-0.0F, v.getFloat(), 0);
+      assertThat(v.getFloat()).isEqualTo(-0.0F);
     });
   }
 
@@ -208,7 +210,7 @@ public class TestVariantScalar {
         VariantTestUtil.EMPTY_METADATA);
     VariantTestUtil.testVariant(value, v -> {
       VariantTestUtil.checkType(v, VariantUtil.PRIMITIVE, Variant.Type.DOUBLE);
-      Assert.assertEquals(Double.longBitsToDouble(1234567890987654321L), 
v.getDouble(), 0);
+      
assertThat(v.getDouble()).isEqualTo(Double.longBitsToDouble(1234567890987654321L));
     });
   }
 
@@ -221,7 +223,7 @@ public class TestVariantScalar {
         VariantTestUtil.EMPTY_METADATA);
     VariantTestUtil.testVariant(value, v -> {
       VariantTestUtil.checkType(v, VariantUtil.PRIMITIVE, Variant.Type.DOUBLE);
-      Assert.assertEquals(-0.0D, v.getDouble(), 0);
+      assertThat(v.getDouble()).isEqualTo(-0.0D);
     });
   }
 
@@ -233,7 +235,7 @@ public class TestVariantScalar {
         VariantTestUtil.EMPTY_METADATA);
     VariantTestUtil.testVariant(value, v -> {
       VariantTestUtil.checkType(v, VariantUtil.PRIMITIVE, 
Variant.Type.DECIMAL4);
-      Assert.assertEquals(new BigDecimal("123456.7890"), v.getDecimal());
+      assertThat(v.getDecimal()).isEqualTo(new BigDecimal("123456.7890"));
     });
   }
 
@@ -246,7 +248,7 @@ public class TestVariantScalar {
         VariantTestUtil.EMPTY_METADATA);
     VariantTestUtil.testVariant(value, v -> {
       VariantTestUtil.checkType(v, VariantUtil.PRIMITIVE, 
Variant.Type.DECIMAL4);
-      Assert.assertEquals(new BigDecimal("-0.0001"), v.getDecimal());
+      assertThat(v.getDecimal()).isEqualTo(new BigDecimal("-0.0001"));
     });
   }
 
@@ -268,7 +270,7 @@ public class TestVariantScalar {
         VariantTestUtil.EMPTY_METADATA);
     VariantTestUtil.testVariant(value, v -> {
       VariantTestUtil.checkType(v, VariantUtil.PRIMITIVE, 
Variant.Type.DECIMAL8);
-      Assert.assertEquals(new BigDecimal("1234567890.987654321"), 
v.getDecimal());
+      assertThat(v.getDecimal()).isEqualTo(new 
BigDecimal("1234567890.987654321"));
     });
   }
 
@@ -290,7 +292,7 @@ public class TestVariantScalar {
         VariantTestUtil.EMPTY_METADATA);
     VariantTestUtil.testVariant(value, v -> {
       VariantTestUtil.checkType(v, VariantUtil.PRIMITIVE, 
Variant.Type.DECIMAL8);
-      Assert.assertEquals(new BigDecimal("-0.000000001"), v.getDecimal());
+      assertThat(v.getDecimal()).isEqualTo(new BigDecimal("-0.000000001"));
     });
   }
 
@@ -320,7 +322,7 @@ public class TestVariantScalar {
         VariantTestUtil.EMPTY_METADATA);
     VariantTestUtil.testVariant(value, v -> {
       VariantTestUtil.checkType(v, VariantUtil.PRIMITIVE, 
Variant.Type.DECIMAL16);
-      Assert.assertEquals(new BigDecimal("9876543210.123456789"), 
v.getDecimal());
+      assertThat(v.getDecimal()).isEqualTo(new 
BigDecimal("9876543210.123456789"));
     });
   }
 
@@ -350,7 +352,7 @@ public class TestVariantScalar {
         VariantTestUtil.EMPTY_METADATA);
     VariantTestUtil.testVariant(value, v -> {
       VariantTestUtil.checkType(v, VariantUtil.PRIMITIVE, 
Variant.Type.DECIMAL16);
-      Assert.assertEquals(new BigDecimal("-9876543210.123456789"), 
v.getDecimal());
+      assertThat(v.getDecimal()).isEqualTo(new 
BigDecimal("-9876543210.123456789"));
     });
   }
 
@@ -361,7 +363,7 @@ public class TestVariantScalar {
         VariantTestUtil.EMPTY_METADATA);
     VariantTestUtil.testVariant(value, v -> {
       VariantTestUtil.checkType(v, VariantUtil.PRIMITIVE, Variant.Type.DATE);
-      Assert.assertEquals(LocalDate.parse("2025-04-17"), 
LocalDate.ofEpochDay(v.getInt()));
+      
assertThat(LocalDate.ofEpochDay(v.getInt())).isEqualTo(LocalDate.parse("2025-04-17"));
     });
   }
 
@@ -374,7 +376,7 @@ public class TestVariantScalar {
         VariantTestUtil.EMPTY_METADATA);
     VariantTestUtil.testVariant(value, v -> {
       VariantTestUtil.checkType(v, VariantUtil.PRIMITIVE, Variant.Type.DATE);
-      Assert.assertEquals(LocalDate.parse("1969-12-31"), 
LocalDate.ofEpochDay(v.getInt()));
+      
assertThat(LocalDate.ofEpochDay(v.getInt())).isEqualTo(LocalDate.parse("1969-12-31"));
     });
   }
 
@@ -395,8 +397,8 @@ public class TestVariantScalar {
         VariantTestUtil.EMPTY_METADATA);
     VariantTestUtil.testVariant(value, v -> {
       VariantTestUtil.checkType(v, VariantUtil.PRIMITIVE, 
Variant.Type.TIMESTAMP_TZ);
-      Assert.assertEquals(
-          Instant.parse("2025-04-17T08:09:10.123456Z"), 
Instant.EPOCH.plus(v.getLong(), ChronoUnit.MICROS));
+      assertThat(Instant.EPOCH.plus(v.getLong(), ChronoUnit.MICROS))
+          .isEqualTo(Instant.parse("2025-04-17T08:09:10.123456Z"));
     });
   }
 
@@ -417,8 +419,8 @@ public class TestVariantScalar {
         VariantTestUtil.EMPTY_METADATA);
     VariantTestUtil.testVariant(value, v -> {
       VariantTestUtil.checkType(v, VariantUtil.PRIMITIVE, 
Variant.Type.TIMESTAMP_TZ);
-      Assert.assertEquals(
-          Instant.parse("1969-12-31T23:59:59.999999Z"), 
Instant.EPOCH.plus(v.getLong(), ChronoUnit.MICROS));
+      assertThat(Instant.EPOCH.plus(v.getLong(), ChronoUnit.MICROS))
+          .isEqualTo(Instant.parse("1969-12-31T23:59:59.999999Z"));
     });
   }
 
@@ -439,8 +441,8 @@ public class TestVariantScalar {
         VariantTestUtil.EMPTY_METADATA);
     VariantTestUtil.testVariant(value, v -> {
       VariantTestUtil.checkType(v, VariantUtil.PRIMITIVE, 
Variant.Type.TIMESTAMP_NTZ);
-      Assert.assertEquals(
-          Instant.parse("2025-04-17T08:09:10.123456Z"), 
Instant.EPOCH.plus(v.getLong(), ChronoUnit.MICROS));
+      assertThat(Instant.EPOCH.plus(v.getLong(), ChronoUnit.MICROS))
+          .isEqualTo(Instant.parse("2025-04-17T08:09:10.123456Z"));
     });
   }
 
@@ -461,8 +463,8 @@ public class TestVariantScalar {
         VariantTestUtil.EMPTY_METADATA);
     VariantTestUtil.testVariant(value, v -> {
       VariantTestUtil.checkType(v, VariantUtil.PRIMITIVE, 
Variant.Type.TIMESTAMP_NTZ);
-      Assert.assertEquals(
-          Instant.parse("1969-12-31T23:59:59.999999Z"), 
Instant.EPOCH.plus(v.getLong(), ChronoUnit.MICROS));
+      assertThat(Instant.EPOCH.plus(v.getLong(), ChronoUnit.MICROS))
+          .isEqualTo(Instant.parse("1969-12-31T23:59:59.999999Z"));
     });
   }
 
@@ -475,7 +477,7 @@ public class TestVariantScalar {
         VariantTestUtil.EMPTY_METADATA);
     VariantTestUtil.testVariant(value, v -> {
       VariantTestUtil.checkType(v, VariantUtil.PRIMITIVE, Variant.Type.BINARY);
-      Assert.assertEquals(ByteBuffer.wrap(new byte[] {'a', 'b', 'c', 'd', 
'e'}), v.getBinary());
+      assertThat(v.getBinary()).isEqualTo(ByteBuffer.wrap(new byte[] {'a', 
'b', 'c', 'd', 'e'}));
     });
   }
 
@@ -488,7 +490,7 @@ public class TestVariantScalar {
         VariantTestUtil.EMPTY_METADATA);
     VariantTestUtil.testVariant(value, v -> {
       VariantTestUtil.checkType(v, VariantUtil.PRIMITIVE, Variant.Type.STRING);
-      Assert.assertEquals("variant", v.getString());
+      assertThat(v.getString()).isEqualTo("variant");
     });
   }
 
@@ -499,7 +501,7 @@ public class TestVariantScalar {
         VariantTestUtil.EMPTY_METADATA);
     VariantTestUtil.testVariant(value, v -> {
       VariantTestUtil.checkType(v, VariantUtil.SHORT_STR, Variant.Type.STRING);
-      Assert.assertEquals("variant", v.getString());
+      assertThat(v.getString()).isEqualTo("variant");
     });
   }
 
@@ -520,7 +522,7 @@ public class TestVariantScalar {
         VariantTestUtil.EMPTY_METADATA);
     VariantTestUtil.testVariant(value, v -> {
       VariantTestUtil.checkType(v, VariantUtil.PRIMITIVE, Variant.Type.TIME);
-      Assert.assertEquals(LocalTime.parse("23:59:59.123456"), 
LocalTime.ofNanoOfDay(v.getLong() * 1_000));
+      assertThat(LocalTime.ofNanoOfDay(v.getLong() * 
1_000)).isEqualTo(LocalTime.parse("23:59:59.123456"));
     });
   }
 
@@ -541,8 +543,8 @@ public class TestVariantScalar {
         VariantTestUtil.EMPTY_METADATA);
     VariantTestUtil.testVariant(value, v -> {
       VariantTestUtil.checkType(v, VariantUtil.PRIMITIVE, 
Variant.Type.TIMESTAMP_NANOS_TZ);
-      Assert.assertEquals(
-          Instant.parse("2025-04-17T08:09:10.123456789Z"), 
Instant.EPOCH.plus(v.getLong(), ChronoUnit.NANOS));
+      assertThat(Instant.EPOCH.plus(v.getLong(), ChronoUnit.NANOS))
+          .isEqualTo(Instant.parse("2025-04-17T08:09:10.123456789Z"));
     });
   }
 
@@ -563,8 +565,8 @@ public class TestVariantScalar {
         VariantTestUtil.EMPTY_METADATA);
     VariantTestUtil.testVariant(value, v -> {
       VariantTestUtil.checkType(v, VariantUtil.PRIMITIVE, 
Variant.Type.TIMESTAMP_NANOS_TZ);
-      Assert.assertEquals(
-          Instant.parse("1969-12-31T23:59:59.999999999Z"), 
Instant.EPOCH.plus(v.getLong(), ChronoUnit.NANOS));
+      assertThat(Instant.EPOCH.plus(v.getLong(), ChronoUnit.NANOS))
+          .isEqualTo(Instant.parse("1969-12-31T23:59:59.999999999Z"));
     });
   }
 
@@ -585,8 +587,8 @@ public class TestVariantScalar {
         VariantTestUtil.EMPTY_METADATA);
     VariantTestUtil.testVariant(value, v -> {
       VariantTestUtil.checkType(v, VariantUtil.PRIMITIVE, 
Variant.Type.TIMESTAMP_NANOS_NTZ);
-      Assert.assertEquals(
-          Instant.parse("2025-04-17T08:09:10.123456789Z"), 
Instant.EPOCH.plus(v.getLong(), ChronoUnit.NANOS));
+      assertThat(Instant.EPOCH.plus(v.getLong(), ChronoUnit.NANOS))
+          .isEqualTo(Instant.parse("2025-04-17T08:09:10.123456789Z"));
     });
   }
 
@@ -607,8 +609,8 @@ public class TestVariantScalar {
         VariantTestUtil.EMPTY_METADATA);
     VariantTestUtil.testVariant(value, v -> {
       VariantTestUtil.checkType(v, VariantUtil.PRIMITIVE, 
Variant.Type.TIMESTAMP_NANOS_NTZ);
-      Assert.assertEquals(
-          Instant.parse("1969-12-31T23:59:59.999999999Z"), 
Instant.EPOCH.plus(v.getLong(), ChronoUnit.NANOS));
+      assertThat(Instant.EPOCH.plus(v.getLong(), ChronoUnit.NANOS))
+          .isEqualTo(Instant.parse("1969-12-31T23:59:59.999999999Z"));
     });
   }
 
@@ -637,154 +639,115 @@ public class TestVariantScalar {
         VariantTestUtil.EMPTY_METADATA);
     VariantTestUtil.testVariant(value, v -> {
       VariantTestUtil.checkType(v, VariantUtil.PRIMITIVE, Variant.Type.UUID);
-      
Assert.assertEquals(UUID.fromString("00112233-4455-6677-8899-aabbccddeeff"), 
v.getUUID());
+      
assertThat(v.getUUID()).isEqualTo(UUID.fromString("00112233-4455-6677-8899-aabbccddeeff"));
     });
   }
 
   @Test
   public void testInvalidType() {
-    try {
-      Variant value = new Variant(ByteBuffer.wrap(new byte[] {(byte) 0xFC}), 
VariantTestUtil.EMPTY_METADATA);
-      value.getBoolean();
-      Assert.fail("Expected exception not thrown");
-    } catch (Exception e) {
-      Assert.assertEquals(
-          "Cannot read unknownType(basicType: 0, valueHeader: 63) value as 
BOOLEAN", e.getMessage());
-    }
+    Variant value = new Variant(ByteBuffer.wrap(new byte[] {(byte) 0xFC}), 
VariantTestUtil.EMPTY_METADATA);
+    assertThatThrownBy(value::getBoolean)
+        .isInstanceOf(IllegalArgumentException.class)
+        .hasMessage("Cannot read unknownType(basicType: 0, valueHeader: 63) 
value as BOOLEAN");
   }
 
   @Test
   public void testInvalidBoolean() {
-    try {
-      Variant value = new Variant(
-          ByteBuffer.wrap(new byte[] {VariantTestUtil.primitiveHeader(6)}), 
VariantTestUtil.EMPTY_METADATA);
-      value.getBoolean();
-      Assert.fail("Expected exception not thrown");
-    } catch (Exception e) {
-      Assert.assertEquals("Cannot read LONG value as BOOLEAN", e.getMessage());
-    }
+    Variant value = new Variant(
+        ByteBuffer.wrap(new byte[] {VariantTestUtil.primitiveHeader(6)}), 
VariantTestUtil.EMPTY_METADATA);
+    assertThatThrownBy(value::getBoolean)
+        .isInstanceOf(IllegalArgumentException.class)
+        .hasMessage("Cannot read LONG value as BOOLEAN");
   }
 
   @Test
   public void testInvalidLong() {
-    try {
-      Variant value = new Variant(
-          ByteBuffer.wrap(new byte[] {VariantTestUtil.primitiveHeader(16)}), 
VariantTestUtil.EMPTY_METADATA);
-      value.getLong();
-      Assert.fail("Expected exception not thrown");
-    } catch (Exception e) {
-      Assert.assertEquals(
-          "Cannot read STRING value as one of [BYTE, SHORT, INT, DATE, LONG, 
TIMESTAMP_TZ, TIMESTAMP_NTZ, TIME, TIMESTAMP_NANOS_TZ, TIMESTAMP_NANOS_NTZ]",
-          e.getMessage());
-    }
+    Variant value = new Variant(
+        ByteBuffer.wrap(new byte[] {VariantTestUtil.primitiveHeader(16)}), 
VariantTestUtil.EMPTY_METADATA);
+    assertThatThrownBy(value::getLong)
+        .isInstanceOf(IllegalArgumentException.class)
+        .hasMessage(
+            "Cannot read STRING value as one of [BYTE, SHORT, INT, DATE, LONG, 
TIMESTAMP_TZ, TIMESTAMP_NTZ, TIME, TIMESTAMP_NANOS_TZ, TIMESTAMP_NANOS_NTZ]");
   }
 
   @Test
   public void testInvalidInt() {
-    try {
-      Variant value = new Variant(
-          ByteBuffer.wrap(new byte[] {VariantTestUtil.primitiveHeader(6)}), 
VariantTestUtil.EMPTY_METADATA);
-      value.getInt();
-      Assert.fail("Expected exception not thrown");
-    } catch (Exception e) {
-      Assert.assertEquals("Cannot read LONG value as one of [BYTE, SHORT, INT, 
DATE]", e.getMessage());
-    }
+    Variant value = new Variant(
+        ByteBuffer.wrap(new byte[] {VariantTestUtil.primitiveHeader(6)}), 
VariantTestUtil.EMPTY_METADATA);
+    assertThatThrownBy(value::getInt)
+        .isInstanceOf(IllegalArgumentException.class)
+        .hasMessage("Cannot read LONG value as one of [BYTE, SHORT, INT, 
DATE]");
   }
 
   @Test
   public void testInvalidShort() {
-    try {
-      Variant value = new Variant(
-          ByteBuffer.wrap(new byte[] {VariantTestUtil.primitiveHeader(6)}), 
VariantTestUtil.EMPTY_METADATA);
-      value.getShort();
-      Assert.fail("Expected exception not thrown");
-    } catch (Exception e) {
-      Assert.assertEquals("Cannot read LONG value as one of [BYTE, SHORT]", 
e.getMessage());
-    }
+    Variant value = new Variant(
+        ByteBuffer.wrap(new byte[] {VariantTestUtil.primitiveHeader(6)}), 
VariantTestUtil.EMPTY_METADATA);
+    assertThatThrownBy(value::getShort)
+        .isInstanceOf(IllegalArgumentException.class)
+        .hasMessage("Cannot read LONG value as one of [BYTE, SHORT]");
   }
 
   @Test
   public void testInvalidByte() {
-    try {
-      Variant value = new Variant(
-          ByteBuffer.wrap(new byte[] {VariantTestUtil.primitiveHeader(6)}), 
VariantTestUtil.EMPTY_METADATA);
-      value.getByte();
-      Assert.fail("Expected exception not thrown");
-    } catch (Exception e) {
-      Assert.assertEquals("Cannot read LONG value as BYTE", e.getMessage());
-    }
+    Variant value = new Variant(
+        ByteBuffer.wrap(new byte[] {VariantTestUtil.primitiveHeader(6)}), 
VariantTestUtil.EMPTY_METADATA);
+    assertThatThrownBy(value::getByte)
+        .isInstanceOf(IllegalArgumentException.class)
+        .hasMessage("Cannot read LONG value as BYTE");
   }
 
   @Test
   public void testInvalidFloat() {
-    try {
-      Variant value = new Variant(
-          ByteBuffer.wrap(new byte[] {VariantTestUtil.primitiveHeader(6)}), 
VariantTestUtil.EMPTY_METADATA);
-      value.getFloat();
-      Assert.fail("Expected exception not thrown");
-    } catch (Exception e) {
-      Assert.assertEquals("Cannot read LONG value as FLOAT", e.getMessage());
-    }
+    Variant value = new Variant(
+        ByteBuffer.wrap(new byte[] {VariantTestUtil.primitiveHeader(6)}), 
VariantTestUtil.EMPTY_METADATA);
+    assertThatThrownBy(value::getFloat)
+        .isInstanceOf(IllegalArgumentException.class)
+        .hasMessage("Cannot read LONG value as FLOAT");
   }
 
   @Test
   public void testInvalidDouble() {
-    try {
-      Variant value = new Variant(
-          ByteBuffer.wrap(new byte[] {VariantTestUtil.primitiveHeader(6)}), 
VariantTestUtil.EMPTY_METADATA);
-      value.getDouble();
-      Assert.fail("Expected exception not thrown");
-    } catch (Exception e) {
-      Assert.assertEquals("Cannot read LONG value as DOUBLE", e.getMessage());
-    }
+    Variant value = new Variant(
+        ByteBuffer.wrap(new byte[] {VariantTestUtil.primitiveHeader(6)}), 
VariantTestUtil.EMPTY_METADATA);
+    assertThatThrownBy(value::getDouble)
+        .isInstanceOf(IllegalArgumentException.class)
+        .hasMessage("Cannot read LONG value as DOUBLE");
   }
 
   @Test
   public void testInvalidDecimal() {
-    try {
-      Variant value = new Variant(
-          ByteBuffer.wrap(new byte[] {VariantTestUtil.primitiveHeader(6), 0}),
-          VariantTestUtil.EMPTY_METADATA);
-      value.getDecimal();
-      Assert.fail("Expected exception not thrown");
-    } catch (Exception e) {
-      Assert.assertEquals("Cannot read LONG value as one of [DECIMAL4, 
DECIMAL8, DECIMAL16]", e.getMessage());
-    }
+    Variant value = new Variant(
+        ByteBuffer.wrap(new byte[] {VariantTestUtil.primitiveHeader(6), 0}), 
VariantTestUtil.EMPTY_METADATA);
+    assertThatThrownBy(value::getDecimal)
+        .isInstanceOf(IllegalArgumentException.class)
+        .hasMessage("Cannot read LONG value as one of [DECIMAL4, DECIMAL8, 
DECIMAL16]");
   }
 
   @Test
   public void testInvalidUUID() {
-    try {
-      Variant value = new Variant(
-          ByteBuffer.wrap(new byte[] {VariantTestUtil.primitiveHeader(6)}), 
VariantTestUtil.EMPTY_METADATA);
-      value.getUUID();
-      Assert.fail("Expected exception not thrown");
-    } catch (Exception e) {
-      Assert.assertEquals("Cannot read LONG value as UUID", e.getMessage());
-    }
+    Variant value = new Variant(
+        ByteBuffer.wrap(new byte[] {VariantTestUtil.primitiveHeader(6)}), 
VariantTestUtil.EMPTY_METADATA);
+    assertThatThrownBy(value::getUUID)
+        .isInstanceOf(IllegalArgumentException.class)
+        .hasMessage("Cannot read LONG value as UUID");
   }
 
   @Test
   public void testInvalidString() {
-    try {
-      Variant value = new Variant(
-          ByteBuffer.wrap(new byte[] {VariantTestUtil.primitiveHeader(6)}), 
VariantTestUtil.EMPTY_METADATA);
-      value.getString();
-      Assert.fail("Expected exception not thrown");
-    } catch (Exception e) {
-      Assert.assertEquals("Cannot read LONG value as STRING", e.getMessage());
-    }
+    Variant value = new Variant(
+        ByteBuffer.wrap(new byte[] {VariantTestUtil.primitiveHeader(6)}), 
VariantTestUtil.EMPTY_METADATA);
+    assertThatThrownBy(value::getString)
+        .isInstanceOf(IllegalArgumentException.class)
+        .hasMessage("Cannot read LONG value as STRING");
   }
 
   @Test
   public void testInvalidBinary() {
-    try {
-      Variant value = new Variant(
-          ByteBuffer.wrap(new byte[] {VariantTestUtil.primitiveHeader(6)}), 
VariantTestUtil.EMPTY_METADATA);
-      value.getBinary();
-      Assert.fail("Expected exception not thrown");
-    } catch (Exception e) {
-      Assert.assertEquals("Cannot read LONG value as BINARY", e.getMessage());
-    }
+    Variant value = new Variant(
+        ByteBuffer.wrap(new byte[] {VariantTestUtil.primitiveHeader(6)}), 
VariantTestUtil.EMPTY_METADATA);
+    assertThatThrownBy(value::getBinary)
+        .isInstanceOf(IllegalArgumentException.class)
+        .hasMessage("Cannot read LONG value as BINARY");
   }
 }
diff --git 
a/parquet-variant/src/test/java/org/apache/parquet/variant/TestVariantScalarBuilder.java
 
b/parquet-variant/src/test/java/org/apache/parquet/variant/TestVariantScalarBuilder.java
index 36cee318a..cd91b54c0 100644
--- 
a/parquet-variant/src/test/java/org/apache/parquet/variant/TestVariantScalarBuilder.java
+++ 
b/parquet-variant/src/test/java/org/apache/parquet/variant/TestVariantScalarBuilder.java
@@ -18,6 +18,9 @@
  */
 package org.apache.parquet.variant;
 
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
+
 import java.lang.reflect.Field;
 import java.math.BigDecimal;
 import java.nio.ByteBuffer;
@@ -27,7 +30,6 @@ import java.time.LocalTime;
 import java.util.Arrays;
 import java.util.UUID;
 import java.util.stream.IntStream;
-import org.junit.Assert;
 import org.junit.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -41,12 +43,9 @@ public class TestVariantScalarBuilder {
     vb.appendNull();
     VariantTestUtil.testVariant(vb.build(), v -> VariantTestUtil.checkType(v, 
VariantUtil.NULL, Variant.Type.NULL));
 
-    try {
-      vb.appendNull();
-      Assert.fail("Expected Exception when appending multiple values");
-    } catch (Exception e) {
-      // expected
-    }
+    assertThatThrownBy(vb::appendNull)
+        .isInstanceOf(IllegalStateException.class)
+        .hasMessage("Cannot call multiple append() methods.");
   }
 
   @Test
@@ -56,15 +55,12 @@ public class TestVariantScalarBuilder {
       vb.appendBoolean(b);
       VariantTestUtil.testVariant(vb.build(), v -> {
         VariantTestUtil.checkType(v, VariantUtil.PRIMITIVE, 
Variant.Type.BOOLEAN);
-        Assert.assertEquals(b, v.getBoolean());
+        assertThat(v.getBoolean()).isEqualTo(b);
       });
 
-      try {
-        vb.appendBoolean(true);
-        Assert.fail("Expected Exception when appending multiple values");
-      } catch (Exception e) {
-        // expected
-      }
+      assertThatThrownBy(() -> vb.appendBoolean(true))
+          .isInstanceOf(IllegalStateException.class)
+          .hasMessage("Cannot call multiple append() methods.");
     });
   }
 
@@ -85,15 +81,12 @@ public class TestVariantScalarBuilder {
           vb.appendLong(l);
           VariantTestUtil.testVariant(vb.build(), v -> {
             VariantTestUtil.checkType(v, VariantUtil.PRIMITIVE, 
Variant.Type.LONG);
-            Assert.assertEquals((long) l, v.getLong());
+            assertThat(v.getLong()).isEqualTo((long) l);
           });
 
-          try {
-            vb.appendLong(1L);
-            Assert.fail("Expected Exception when appending multiple values");
-          } catch (Exception e) {
-            // expected
-          }
+          assertThatThrownBy(() -> vb.appendLong(1L))
+              .isInstanceOf(IllegalStateException.class)
+              .hasMessage("Cannot call multiple append() methods.");
         });
   }
 
@@ -112,15 +105,12 @@ public class TestVariantScalarBuilder {
           vb.appendInt(i);
           VariantTestUtil.testVariant(vb.build(), v -> {
             VariantTestUtil.checkType(v, VariantUtil.PRIMITIVE, 
Variant.Type.INT);
-            Assert.assertEquals((int) i, v.getInt());
+            assertThat(v.getInt()).isEqualTo((int) i);
           });
 
-          try {
-            vb.appendInt(1);
-            Assert.fail("Expected Exception when appending multiple values");
-          } catch (Exception e) {
-            // expected
-          }
+          assertThatThrownBy(() -> vb.appendInt(1))
+              .isInstanceOf(IllegalStateException.class)
+              .hasMessage("Cannot call multiple append() methods.");
         });
   }
 
@@ -132,15 +122,12 @@ public class TestVariantScalarBuilder {
           vb.appendShort(s);
           VariantTestUtil.testVariant(vb.build(), v -> {
             VariantTestUtil.checkType(v, VariantUtil.PRIMITIVE, 
Variant.Type.SHORT);
-            Assert.assertEquals((short) s, v.getShort());
+            assertThat(v.getShort()).isEqualTo((short) s);
           });
 
-          try {
-            vb.appendShort((short) 1);
-            Assert.fail("Expected Exception when appending multiple values");
-          } catch (Exception e) {
-            // expected
-          }
+          assertThatThrownBy(() -> vb.appendShort((short) 1))
+              .isInstanceOf(IllegalStateException.class)
+              .hasMessage("Cannot call multiple append() methods.");
         });
   }
 
@@ -151,15 +138,12 @@ public class TestVariantScalarBuilder {
       vb.appendByte(b);
       VariantTestUtil.testVariant(vb.build(), v -> {
         VariantTestUtil.checkType(v, VariantUtil.PRIMITIVE, Variant.Type.BYTE);
-        Assert.assertEquals((byte) b, v.getByte());
+        assertThat(v.getByte()).isEqualTo((byte) b);
       });
 
-      try {
-        vb.appendByte((byte) 1);
-        Assert.fail("Expected Exception when appending multiple values");
-      } catch (Exception e) {
-        // expected
-      }
+      assertThatThrownBy(() -> vb.appendByte((byte) 1))
+          .isInstanceOf(IllegalStateException.class)
+          .hasMessage("Cannot call multiple append() methods.");
     });
   }
 
@@ -170,15 +154,12 @@ public class TestVariantScalarBuilder {
       vb.appendFloat(f);
       VariantTestUtil.testVariant(vb.build(), v -> {
         VariantTestUtil.checkType(v, VariantUtil.PRIMITIVE, 
Variant.Type.FLOAT);
-        Assert.assertEquals(f, v.getFloat(), 0);
+        assertThat(v.getFloat()).isEqualTo(f);
       });
 
-      try {
-        vb.appendFloat(1.2f);
-        Assert.fail("Expected Exception when appending multiple values");
-      } catch (Exception e) {
-        // expected
-      }
+      assertThatThrownBy(() -> vb.appendFloat(1.2f))
+          .isInstanceOf(IllegalStateException.class)
+          .hasMessage("Cannot call multiple append() methods.");
     });
   }
 
@@ -200,7 +181,9 @@ public class TestVariantScalarBuilder {
     vb.appendFloat(testFloat);
 
     int writePos = (Integer) writePosField.get(vb);
-    Assert.assertEquals("writePos should be exactly 5 after appendFloat", 5, 
writePos);
+    assertThat(writePos)
+        .as("writePos should be exactly 5 after appendFloat")
+        .isEqualTo(5);
 
     int modifiedBytes = 0;
     for (int i = 0; i < 10; i++) {
@@ -208,15 +191,20 @@ public class TestVariantScalarBuilder {
         modifiedBytes++;
       }
     }
-    Assert.assertEquals("appendFloat should write exactly 5 bytes (1 header + 
4 data)", 5, modifiedBytes);
+    assertThat(modifiedBytes)
+        .as("appendFloat should write exactly 5 bytes (1 header + 4 data)")
+        .isEqualTo(5);
 
     for (int i = 5; i < 10; i++) {
-      Assert.assertEquals(
-          "Byte at position " + i + " should not be modified by appendFloat", 
(byte) 0xFF, buffer[i]);
+      assertThat(buffer[i])
+          .as("Byte at position " + i + " should not be modified by 
appendFloat")
+          .isEqualTo((byte) 0xFF);
     }
 
     Variant variant = vb.build();
-    Assert.assertEquals("Float value should be preserved correctly", 
testFloat, variant.getFloat(), 0.0f);
+    assertThat(variant.getFloat())
+        .as("Float value should be preserved correctly")
+        .isEqualTo(testFloat);
   }
 
   @Test
@@ -226,15 +214,12 @@ public class TestVariantScalarBuilder {
       vb.appendDouble(d);
       VariantTestUtil.testVariant(vb.build(), v -> {
         VariantTestUtil.checkType(v, VariantUtil.PRIMITIVE, 
Variant.Type.DOUBLE);
-        Assert.assertEquals(d, v.getDouble(), 0);
+        assertThat(v.getDouble()).isEqualTo(d);
       });
 
-      try {
-        vb.appendDouble(1.2);
-        Assert.fail("Expected Exception when appending multiple values");
-      } catch (Exception e) {
-        // expected
-      }
+      assertThatThrownBy(() -> vb.appendDouble(1.2))
+          .isInstanceOf(IllegalStateException.class)
+          .hasMessage("Cannot call multiple append() methods.");
     });
   }
 
@@ -246,7 +231,7 @@ public class TestVariantScalarBuilder {
       vb.appendDecimal(d);
       VariantTestUtil.testVariant(vb.build(), v -> {
         VariantTestUtil.checkType(v, VariantUtil.PRIMITIVE, 
Variant.Type.DECIMAL4);
-        Assert.assertEquals(d, v.getDecimal());
+        assertThat(v.getDecimal()).isEqualTo(d);
       });
     });
 
@@ -257,7 +242,7 @@ public class TestVariantScalarBuilder {
           vb.appendDecimal(d);
           VariantTestUtil.testVariant(vb.build(), v -> {
             VariantTestUtil.checkType(v, VariantUtil.PRIMITIVE, 
Variant.Type.DECIMAL8);
-            Assert.assertEquals(d, v.getDecimal());
+            assertThat(v.getDecimal()).isEqualTo(d);
           });
         });
 
@@ -268,18 +253,15 @@ public class TestVariantScalarBuilder {
           vb.appendDecimal(d);
           VariantTestUtil.testVariant(vb.build(), v -> {
             VariantTestUtil.checkType(v, VariantUtil.PRIMITIVE, 
Variant.Type.DECIMAL16);
-            Assert.assertEquals(d, v.getDecimal());
+            assertThat(v.getDecimal()).isEqualTo(d);
           });
         });
 
     VariantBuilder vb = new VariantBuilder();
     vb.appendDecimal(new BigDecimal("10.2147483647"));
-    try {
-      vb.appendDecimal(new BigDecimal("10.2147483647"));
-      Assert.fail("Expected Exception when appending multiple values");
-    } catch (Exception e) {
-      // expected
-    }
+    assertThatThrownBy(() -> vb.appendDecimal(new BigDecimal("10.2147483647")))
+        .isInstanceOf(IllegalStateException.class)
+        .hasMessage("Cannot call multiple append() methods.");
   }
 
   @Test
@@ -290,7 +272,7 @@ public class TestVariantScalarBuilder {
     vb1.appendDecimal(smallPrecisionLargeScale);
     VariantTestUtil.testVariant(vb1.build(), v -> {
       VariantTestUtil.checkType(v, VariantUtil.PRIMITIVE, 
Variant.Type.DECIMAL4);
-      Assert.assertEquals(smallPrecisionLargeScale, v.getDecimal());
+      assertThat(v.getDecimal()).isEqualTo(smallPrecisionLargeScale);
     });
 
     BigDecimal mediumPrecisionLargeScale = new 
BigDecimal("1234567890").scaleByPowerOfTen(-25);
@@ -298,7 +280,7 @@ public class TestVariantScalarBuilder {
     vb2.appendDecimal(mediumPrecisionLargeScale);
     VariantTestUtil.testVariant(vb2.build(), v -> {
       VariantTestUtil.checkType(v, VariantUtil.PRIMITIVE, 
Variant.Type.DECIMAL8);
-      Assert.assertEquals(mediumPrecisionLargeScale, v.getDecimal());
+      assertThat(v.getDecimal()).isEqualTo(mediumPrecisionLargeScale);
     });
 
     BigDecimal maxDecimal4Precision = new 
BigDecimal("123456789").scaleByPowerOfTen(-18);
@@ -306,7 +288,7 @@ public class TestVariantScalarBuilder {
     vb3.appendDecimal(maxDecimal4Precision);
     VariantTestUtil.testVariant(vb3.build(), v -> {
       VariantTestUtil.checkType(v, VariantUtil.PRIMITIVE, 
Variant.Type.DECIMAL4);
-      Assert.assertEquals(maxDecimal4Precision, v.getDecimal());
+      assertThat(v.getDecimal()).isEqualTo(maxDecimal4Precision);
     });
 
     BigDecimal maxDecimal8Precision = new 
BigDecimal("123456789012345678").scaleByPowerOfTen(-19);
@@ -314,7 +296,7 @@ public class TestVariantScalarBuilder {
     vb4.appendDecimal(maxDecimal8Precision);
     VariantTestUtil.testVariant(vb4.build(), v -> {
       VariantTestUtil.checkType(v, VariantUtil.PRIMITIVE, 
Variant.Type.DECIMAL8);
-      Assert.assertEquals(maxDecimal8Precision, v.getDecimal());
+      assertThat(v.getDecimal()).isEqualTo(maxDecimal8Precision);
     });
   }
 
@@ -325,15 +307,12 @@ public class TestVariantScalarBuilder {
     vb.appendDate(days);
     VariantTestUtil.testVariant(vb.build(), v -> {
       VariantTestUtil.checkType(v, VariantUtil.PRIMITIVE, Variant.Type.DATE);
-      Assert.assertEquals(days, v.getInt());
+      assertThat(v.getInt()).isEqualTo(days);
     });
 
-    try {
-      vb.appendDate(123);
-      Assert.fail("Expected Exception when appending multiple values");
-    } catch (Exception e) {
-      // expected
-    }
+    assertThatThrownBy(() -> vb.appendDate(123))
+        .isInstanceOf(IllegalStateException.class)
+        .hasMessage("Cannot call multiple append() methods.");
   }
 
   @Test
@@ -342,15 +321,12 @@ public class TestVariantScalarBuilder {
     vb.appendTimestampTz(1734373425321456L);
     VariantTestUtil.testVariant(vb.build(), v -> {
       VariantTestUtil.checkType(v, VariantUtil.PRIMITIVE, 
Variant.Type.TIMESTAMP_TZ);
-      Assert.assertEquals(1734373425321456L, v.getLong());
+      assertThat(v.getLong()).isEqualTo(1734373425321456L);
     });
 
-    try {
-      vb.appendTimestampTz(1734373425321456L);
-      Assert.fail("Expected Exception when appending multiple values");
-    } catch (Exception e) {
-      // expected
-    }
+    assertThatThrownBy(() -> vb.appendTimestampTz(1734373425321456L))
+        .isInstanceOf(IllegalStateException.class)
+        .hasMessage("Cannot call multiple append() methods.");
   }
 
   @Test
@@ -359,15 +335,12 @@ public class TestVariantScalarBuilder {
     vb.appendTimestampNtz(1734373425321456L);
     VariantTestUtil.testVariant(vb.build(), v -> {
       VariantTestUtil.checkType(v, VariantUtil.PRIMITIVE, 
Variant.Type.TIMESTAMP_NTZ);
-      Assert.assertEquals(1734373425321456L, v.getLong());
+      assertThat(v.getLong()).isEqualTo(1734373425321456L);
     });
 
-    try {
-      vb.appendTimestampNtz(1734373425321456L);
-      Assert.fail("Expected Exception when appending multiple values");
-    } catch (Exception e) {
-      // expected
-    }
+    assertThatThrownBy(() -> vb.appendTimestampNtz(1734373425321456L))
+        .isInstanceOf(IllegalStateException.class)
+        .hasMessage("Cannot call multiple append() methods.");
   }
 
   @Test
@@ -376,15 +349,12 @@ public class TestVariantScalarBuilder {
     vb.appendBinary(ByteBuffer.wrap(new byte[] {0, 1, 2, 3, 4, 5, 6, 7, 8, 
9}));
     VariantTestUtil.testVariant(vb.build(), v -> {
       VariantTestUtil.checkType(v, VariantUtil.PRIMITIVE, Variant.Type.BINARY);
-      Assert.assertEquals(ByteBuffer.wrap(new byte[] {0, 1, 2, 3, 4, 5, 6, 7, 
8, 9}), v.getBinary());
+      assertThat(v.getBinary()).isEqualTo(ByteBuffer.wrap(new byte[] {0, 1, 2, 
3, 4, 5, 6, 7, 8, 9}));
     });
 
-    try {
-      vb.appendBinary(ByteBuffer.wrap(new byte[] {0, 1, 2, 3, 4, 5, 6, 7, 8, 
9}));
-      Assert.fail("Expected Exception when appending multiple values");
-    } catch (Exception e) {
-      // expected
-    }
+    assertThatThrownBy(() -> vb.appendBinary(ByteBuffer.wrap(new byte[] {0, 1, 
2, 3, 4, 5, 6, 7, 8, 9})))
+        .isInstanceOf(IllegalStateException.class)
+        .hasMessage("Cannot call multiple append() methods.");
   }
 
   @Test
@@ -394,8 +364,8 @@ public class TestVariantScalarBuilder {
     int remainingBefore = buf.remaining();
     VariantBuilder vb = new VariantBuilder();
     vb.appendBinary(buf);
-    Assert.assertEquals(positionBefore, buf.position());
-    Assert.assertEquals(remainingBefore, buf.remaining());
+    assertThat(buf.position()).isEqualTo(positionBefore);
+    assertThat(buf.remaining()).isEqualTo(remainingBefore);
   }
 
   @Test
@@ -411,18 +381,15 @@ public class TestVariantScalarBuilder {
             } else {
               VariantTestUtil.checkType(v, VariantUtil.PRIMITIVE, 
Variant.Type.STRING);
             }
-            Assert.assertEquals(s, v.getString());
+            assertThat(v.getString()).isEqualTo(s);
           });
         });
 
     VariantBuilder vb = new VariantBuilder();
     vb.appendString(VariantTestUtil.randomString(10));
-    try {
-      vb.appendString(VariantTestUtil.randomString(10));
-      Assert.fail("Expected Exception when appending multiple values");
-    } catch (Exception e) {
-      // expected
-    }
+    assertThatThrownBy(() -> vb.appendString(VariantTestUtil.randomString(10)))
+        .isInstanceOf(IllegalStateException.class)
+        .hasMessage("Cannot call multiple append() methods.");
   }
 
   @Test
@@ -434,27 +401,20 @@ public class TestVariantScalarBuilder {
       vb.appendTime(micros);
       VariantTestUtil.testVariant(vb.build(), v -> {
         VariantTestUtil.checkType(v, VariantUtil.PRIMITIVE, Variant.Type.TIME);
-        Assert.assertEquals(micros, v.getLong());
+        assertThat(v.getLong()).isEqualTo(micros);
       });
     }
 
     // test negative time
-    try {
-      VariantBuilder vb = new VariantBuilder();
-      vb.appendTime(-1);
-      Assert.fail("Expected Exception when adding a negative time value");
-    } catch (IllegalArgumentException e) {
-      // expected
-    }
+    assertThatThrownBy(() -> new VariantBuilder().appendTime(-1))
+        .isInstanceOf(IllegalArgumentException.class)
+        .hasMessage("Time value (-1) cannot be negative.");
 
     VariantBuilder vb = new VariantBuilder();
     vb.appendTime(123456);
-    try {
-      vb.appendTime(123456);
-      Assert.fail("Expected Exception when appending multiple values");
-    } catch (Exception e) {
-      // expected
-    }
+    assertThatThrownBy(() -> vb.appendTime(123456))
+        .isInstanceOf(IllegalStateException.class)
+        .hasMessage("Cannot call multiple append() methods.");
   }
 
   @Test
@@ -463,15 +423,12 @@ public class TestVariantScalarBuilder {
     vb.appendTimestampNanosTz(1734373425321456987L);
     VariantTestUtil.testVariant(vb.build(), v -> {
       VariantTestUtil.checkType(v, VariantUtil.PRIMITIVE, 
Variant.Type.TIMESTAMP_NANOS_TZ);
-      Assert.assertEquals(1734373425321456987L, v.getLong());
+      assertThat(v.getLong()).isEqualTo(1734373425321456987L);
     });
 
-    try {
-      vb.appendTimestampNanosTz(1734373425321456987L);
-      Assert.fail("Expected Exception when appending multiple values");
-    } catch (Exception e) {
-      // expected
-    }
+    assertThatThrownBy(() -> vb.appendTimestampNanosTz(1734373425321456987L))
+        .isInstanceOf(IllegalStateException.class)
+        .hasMessage("Cannot call multiple append() methods.");
   }
 
   @Test
@@ -480,15 +437,12 @@ public class TestVariantScalarBuilder {
     vb.appendTimestampNanosNtz(1734373425321456987L);
     VariantTestUtil.testVariant(vb.build(), v -> {
       VariantTestUtil.checkType(v, VariantUtil.PRIMITIVE, 
Variant.Type.TIMESTAMP_NANOS_NTZ);
-      Assert.assertEquals(1734373425321456987L, v.getLong());
+      assertThat(v.getLong()).isEqualTo(1734373425321456987L);
     });
 
-    try {
-      vb.appendTimestampNanosNtz(1734373425321456987L);
-      Assert.fail("Expected Exception when appending multiple values");
-    } catch (Exception e) {
-      // expected
-    }
+    assertThatThrownBy(() -> vb.appendTimestampNanosNtz(1734373425321456987L))
+        .isInstanceOf(IllegalStateException.class)
+        .hasMessage("Cannot call multiple append() methods.");
   }
 
   @Test
@@ -502,15 +456,12 @@ public class TestVariantScalarBuilder {
     vb.appendUUID(expected);
     VariantTestUtil.testVariant(vb.build(), v -> {
       VariantTestUtil.checkType(v, VariantUtil.PRIMITIVE, Variant.Type.UUID);
-      Assert.assertEquals(expected, v.getUUID());
+      assertThat(v.getUUID()).isEqualTo(expected);
     });
 
-    try {
-      vb.appendUUID(expected);
-      Assert.fail("Expected Exception when appending multiple values");
-    } catch (Exception e) {
-      // expected
-    }
+    assertThatThrownBy(() -> vb.appendUUID(expected))
+        .isInstanceOf(IllegalStateException.class)
+        .hasMessage("Cannot call multiple append() methods.");
   }
 
   @Test
@@ -524,16 +475,13 @@ public class TestVariantScalarBuilder {
     vb.appendUUIDBytes(ByteBuffer.wrap(uuid));
     VariantTestUtil.testVariant(vb.build(), v -> {
       VariantTestUtil.checkType(v, VariantUtil.PRIMITIVE, Variant.Type.UUID);
-      Assert.assertEquals(expected, v.getUUID());
+      assertThat(v.getUUID()).isEqualTo(expected);
     });
 
     // appendUUIDBytes must go through onAppend(), so a second append on the 
root builder
     // (which already holds a value) must be rejected instead of producing a 
multi-value buffer.
-    try {
-      vb.appendUUIDBytes(ByteBuffer.wrap(uuid));
-      Assert.fail("Expected Exception when appending multiple values");
-    } catch (Exception e) {
-      // expected
-    }
+    assertThatThrownBy(() -> vb.appendUUIDBytes(ByteBuffer.wrap(uuid)))
+        .isInstanceOf(IllegalStateException.class)
+        .hasMessage("Cannot call multiple append() methods.");
   }
 }
diff --git 
a/parquet-variant/src/test/java/org/apache/parquet/variant/VariantTestUtil.java 
b/parquet-variant/src/test/java/org/apache/parquet/variant/VariantTestUtil.java
index 486c1bd43..00d0bb82f 100644
--- 
a/parquet-variant/src/test/java/org/apache/parquet/variant/VariantTestUtil.java
+++ 
b/parquet-variant/src/test/java/org/apache/parquet/variant/VariantTestUtil.java
@@ -18,13 +18,14 @@
  */
 package org.apache.parquet.variant;
 
+import static org.assertj.core.api.Assertions.assertThat;
+
 import java.nio.ByteBuffer;
 import java.nio.ByteOrder;
 import java.nio.charset.StandardCharsets;
 import java.security.SecureRandom;
 import java.util.Arrays;
 import java.util.function.Consumer;
-import org.junit.Assert;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -38,8 +39,9 @@ public class VariantTestUtil {
   static final ByteBuffer EMPTY_METADATA = ByteBuffer.wrap(new byte[] {0b1});
 
   static void checkType(Variant v, int expectedBasicType, Variant.Type 
expectedType) {
-    Assert.assertEquals(expectedBasicType, v.value.get(v.value.position()) & 
VariantUtil.BASIC_TYPE_MASK);
-    Assert.assertEquals(expectedType, v.getType());
+    assertThat(v.value.get(v.value.position()) & VariantUtil.BASIC_TYPE_MASK)
+        .isEqualTo(expectedBasicType);
+    assertThat(v.getType()).isEqualTo(expectedType);
   }
 
   static String randomString(int len) {
diff --git a/pom.xml b/pom.xml
index 7b4bb4e8a..3b1834ed5 100644
--- a/pom.xml
+++ b/pom.xml
@@ -99,6 +99,7 @@
     <brotli-codec.version>0.1.1</brotli-codec.version>
     <assertj.version>3.27.7</assertj.version>
     <junit.version>5.14.4</junit.version>
+    <assertj.version>3.27.7</assertj.version>
     <mockito.version>5.23.0</mockito.version>
     <net.openhft.version>0.27ea1</net.openhft.version>
     
<build-helper-maven-plugin.version>3.6.1</build-helper-maven-plugin.version>

Reply via email to