You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flink.apache.org by ch...@apache.org on 2022/05/20 08:07:41 UTC

[flink] branch master updated: [FLINK-27672][tests][table] Migrate flink-table-common to JUnit5

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

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


The following commit(s) were added to refs/heads/master by this push:
     new f1b4742b87d [FLINK-27672][tests][table] Migrate flink-table-common to JUnit5
f1b4742b87d is described below

commit f1b4742b87de6175289539ca3c83c4e33ba4e825
Author: Sergey Nuyanzin <sn...@gmail.com>
AuthorDate: Fri May 20 10:07:34 2022 +0200

    [FLINK-27672][tests][table] Migrate flink-table-common to JUnit5
---
 flink-table/flink-table-common/pom.xml             |   6 +
 .../apache/flink/table/api/TableSchemaTest.java    |  42 ++--
 .../api/constraints/UniqueConstraintTest.java      |   6 +-
 .../data/columnar/vector/ColumnVectorTest.java     |  26 +-
 .../columnar/vector/VectorizedColumnBatchTest.java |  10 +-
 .../flink/table/data/utils/JoinedRowDataTest.java  |   8 +-
 .../table/data/utils/ProjectedRowDataTest.java     |   6 +-
 .../descriptors/DescriptorPropertiesTest.java      |  49 ++--
 .../table/descriptors/DescriptorTestBase.java      |  85 -------
 .../flink/table/expressions/ExpressionTest.java    |  34 +--
 .../flink/table/factories/FactoryUtilTest.java     |  58 ++---
 .../factories/TableSinkFactoryServiceTest.java     |  18 +-
 .../factories/module/CoreModuleFactoryTest.java    |   6 +-
 .../functions/UserDefinedFunctionHelperTest.java   |  10 +-
 .../apache/flink/table/module/CoreModuleTest.java  |  12 +-
 .../flink/table/plan/stats/TableStatsTest.java     |  12 +-
 .../flink/table/sources/TableSourceTestBase.java   |   2 +-
 .../apache/flink/table/test/LogicalTypeAssert.java |   2 +-
 .../table/types/ClassDataTypeConverterTest.java    |  86 +++----
 .../org/apache/flink/table/types/DataTypeTest.java |  36 +--
 .../apache/flink/table/types/DataTypesTest.java    |  43 ++--
 .../types/LegacyTypeInfoDataTypeConverterTest.java | 101 +++-----
 .../flink/table/types/LogicalCommonTypeTest.java   | 268 +++++++++------------
 .../table/types/LogicalTypeCastAvoidanceTest.java  | 204 +++++++---------
 .../flink/table/types/LogicalTypeCastsTest.java    |   2 +-
 .../table/types/LogicalTypeDuplicatorTest.java     |  53 ++--
 .../flink/table/types/LogicalTypeParserTest.java   |  32 ++-
 .../apache/flink/table/types/LogicalTypesTest.java |  76 +++---
 .../table/types/TypeInfoDataTypeConverterTest.java |  25 +-
 .../table/types/ValueDataTypeConverterTest.java    | 121 ++++------
 .../types/extraction/DataTypeExtractorTest.java    |  23 +-
 .../extraction/TypeInferenceExtractorTest.java     |  50 ++--
 .../inference/ComparableInputTypeStrategyTest.java |  12 +-
 .../types/inference/InputTypeStrategiesTest.java   |  13 +-
 .../inference/InputTypeStrategiesTestBase.java     |  37 +--
 .../types/inference/MappingTypeStrategiesTest.java |  13 +-
 .../SubsequenceInputTypeStrategyTest.java          |  14 +-
 .../table/types/inference/TypeStrategiesTest.java  |  13 +-
 .../types/inference/TypeStrategiesTestBase.java    |  26 +-
 .../types/inference/TypeTransformationsTest.java   |  12 +-
 .../strategies/ArrayTypeStrategyTest.java          |  13 +-
 .../CurrentWatermarkInputTypeStrategyTest.java     |  14 +-
 .../CurrentWatermarkTypeStrategyTest.java          |  13 +-
 .../strategies/DecimalTypeStrategyTest.java        |  13 +-
 .../inference/strategies/GetTypeStrategyTest.java  |  13 +-
 .../inference/strategies/MapTypeStrategyTest.java  |  13 +-
 .../RepeatingSequenceInputTypeStrategyTest.java    |  13 +-
 .../inference/strategies/RowTypeStrategyTest.java  |  13 +-
 .../strategies/StringConcatTypeStrategyTest.java   |  13 +-
 .../strategies/SymbolArgumentTypeStrategyTest.java |  13 +-
 .../TypeLiteralArgumentTypeStrategyTest.java       |  13 +-
 .../types/logical/utils/LogicalTypeChecksTest.java |  22 +-
 .../logical/utils/LogicalTypeMergingTest.java      |  16 +-
 .../flink/table/types/utils/DataTypeUtilsTest.java |  29 +--
 .../flink/table/utils/EncodingUtilsTest.java       |  14 +-
 .../flink/table/utils/PartitionPathUtilsTest.java  |  16 +-
 .../flink/table/utils/TableSchemaUtilsTest.java    |   8 +-
 .../flink/table/utils/TypeMappingUtilsTest.java    |  36 +--
 .../flink/table/utils/TypeStringUtilsTest.java     |  31 ++-
 .../flink/table/utils/print/TableauStyleTest.java  |  20 +-
 .../org.junit.jupiter.api.extension.Extension      |  16 ++
 61 files changed, 879 insertions(+), 1125 deletions(-)

diff --git a/flink-table/flink-table-common/pom.xml b/flink-table/flink-table-common/pom.xml
index 8da7075f752..5c8f2741b0c 100644
--- a/flink-table/flink-table-common/pom.xml
+++ b/flink-table/flink-table-common/pom.xml
@@ -85,6 +85,12 @@ under the License.
 						<goals>
 							<goal>test-jar</goal>
 						</goals>
+						<configuration>
+							<excludes>
+								<!-- test-jar is still used by JUnit4 modules -->
+								<exclude>META-INF/services/org.junit.jupiter.api.extension.Extension</exclude>
+							</excludes>
+						</configuration>
 					</execution>
 				</executions>
 			</plugin>
diff --git a/flink-table/flink-table-common/src/test/java/org/apache/flink/table/api/TableSchemaTest.java b/flink-table/flink-table-common/src/test/java/org/apache/flink/table/api/TableSchemaTest.java
index cbed7e13f26..ab4014f3a6a 100644
--- a/flink-table/flink-table-common/src/test/java/org/apache/flink/table/api/TableSchemaTest.java
+++ b/flink-table/flink-table-common/src/test/java/org/apache/flink/table/api/TableSchemaTest.java
@@ -23,7 +23,7 @@ import org.apache.flink.api.java.tuple.Tuple3;
 import org.apache.flink.table.api.constraints.UniqueConstraint;
 import org.apache.flink.table.types.DataType;
 
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -34,7 +34,7 @@ import static org.assertj.core.api.Assertions.assertThat;
 import static org.assertj.core.api.Assertions.assertThatThrownBy;
 
 /** Tests for {@link TableSchema}. */
-public class TableSchemaTest {
+class TableSchemaTest {
 
     private static final String WATERMARK_EXPRESSION = "localtimestamp";
     private static final String WATERMARK_EXPRESSION_TS_LTZ = "now()";
@@ -42,7 +42,7 @@ public class TableSchemaTest {
     private static final DataType WATERMARK_TS_LTZ_DATATYPE = DataTypes.TIMESTAMP_LTZ(3);
 
     @Test
-    public void testTableSchema() {
+    void testTableSchema() {
         TableSchema schema =
                 TableSchema.builder()
                         .add(TableColumn.physical("f0", DataTypes.BIGINT()))
@@ -89,7 +89,7 @@ public class TableSchemaTest {
     }
 
     @Test
-    public void testWatermarkOnTimestampLtz() {
+    void testWatermarkOnTimestampLtz() {
         TableSchema tableSchema =
                 TableSchema.builder()
                         .field("f0", DataTypes.TIMESTAMP())
@@ -111,7 +111,7 @@ public class TableSchemaTest {
     }
 
     @Test
-    public void testPersistedRowDataType() {
+    void testPersistedRowDataType() {
         final TableSchema schema =
                 TableSchema.builder()
                         .add(TableColumn.physical("f0", DataTypes.BIGINT()))
@@ -134,7 +134,7 @@ public class TableSchemaTest {
     }
 
     @Test
-    public void testPhysicalRowDataType() {
+    void testPhysicalRowDataType() {
         final TableSchema schema =
                 TableSchema.builder()
                         .add(TableColumn.physical("f0", DataTypes.BIGINT()))
@@ -155,7 +155,7 @@ public class TableSchemaTest {
     }
 
     @Test
-    public void testRowDataType() {
+    void testRowDataType() {
         final TableSchema schema =
                 TableSchema.builder()
                         .add(TableColumn.physical("f0", DataTypes.BIGINT()))
@@ -180,7 +180,7 @@ public class TableSchemaTest {
     }
 
     @Test
-    public void testWatermarkOnDifferentFields() {
+    void testWatermarkOnDifferentFields() {
         // column_name, column_type, exception_msg
         List<Tuple3<String, DataType, String>> testData = new ArrayList<>();
         testData.add(Tuple3.of("a", DataTypes.BIGINT(), "but is of type 'BIGINT'"));
@@ -215,7 +215,7 @@ public class TableSchemaTest {
     }
 
     @Test
-    public void testWatermarkOnNestedField() {
+    void testWatermarkOnNestedField() {
         TableSchema schema =
                 TableSchema.builder()
                         .field("f0", DataTypes.BIGINT())
@@ -239,7 +239,7 @@ public class TableSchemaTest {
     }
 
     @Test
-    public void testWatermarkOnNonExistedField() {
+    void testWatermarkOnNonExistedField() {
         assertThatThrownBy(
                         () ->
                                 TableSchema.builder()
@@ -258,7 +258,7 @@ public class TableSchemaTest {
     }
 
     @Test
-    public void testMultipleWatermarks() {
+    void testMultipleWatermarks() {
         assertThatThrownBy(
                         () ->
                                 TableSchema.builder()
@@ -278,7 +278,7 @@ public class TableSchemaTest {
     }
 
     @Test
-    public void testDifferentWatermarkStrategyOutputTypes() {
+    void testDifferentWatermarkStrategyOutputTypes() {
         List<Tuple2<DataType, String>> testData = new ArrayList<>();
         testData.add(Tuple2.of(DataTypes.BIGINT(), "but is of type 'BIGINT'"));
         testData.add(Tuple2.of(DataTypes.STRING(), "but is of type 'STRING'"));
@@ -313,7 +313,7 @@ public class TableSchemaTest {
     CONSTRAINTS TESTS
     */
     @Test
-    public void testPrimaryKeyPrinting() {
+    void testPrimaryKeyPrinting() {
         TableSchema schema =
                 TableSchema.builder()
                         .field("f0", DataTypes.BIGINT().notNull())
@@ -332,7 +332,7 @@ public class TableSchemaTest {
     }
 
     @Test
-    public void testPrimaryKeyColumnsIndices() {
+    void testPrimaryKeyColumnsIndices() {
         TableSchema schema =
                 TableSchema.builder()
                         .field("f0", DataTypes.BIGINT().notNull())
@@ -347,7 +347,7 @@ public class TableSchemaTest {
     }
 
     @Test
-    public void testPrimaryKeyLazilyDefinedColumns() {
+    void testPrimaryKeyLazilyDefinedColumns() {
         TableSchema schema =
                 TableSchema.builder()
                         .field("f0", DataTypes.BIGINT().notNull())
@@ -362,7 +362,7 @@ public class TableSchemaTest {
     }
 
     @Test
-    public void testPrimaryKeyNoColumn() {
+    void testPrimaryKeyNoColumn() {
         assertThatThrownBy(
                         () ->
                                 TableSchema.builder()
@@ -374,7 +374,7 @@ public class TableSchemaTest {
     }
 
     @Test
-    public void testPrimaryKeyNullableColumn() {
+    void testPrimaryKeyNullableColumn() {
         assertThatThrownBy(
                         () ->
                                 TableSchema.builder()
@@ -386,7 +386,7 @@ public class TableSchemaTest {
     }
 
     @Test
-    public void testPrimaryKeyGeneratedColumn() {
+    void testPrimaryKeyGeneratedColumn() {
         assertThatThrownBy(
                         () ->
                                 TableSchema.builder()
@@ -399,7 +399,7 @@ public class TableSchemaTest {
     }
 
     @Test
-    public void testPrimaryKeyNameMustNotBeNull() {
+    void testPrimaryKeyNameMustNotBeNull() {
         assertThatThrownBy(
                         () ->
                                 TableSchema.builder()
@@ -411,7 +411,7 @@ public class TableSchemaTest {
     }
 
     @Test
-    public void testPrimaryKeyNameMustNotBeEmpty() {
+    void testPrimaryKeyNameMustNotBeEmpty() {
         assertThatThrownBy(
                         () ->
                                 TableSchema.builder()
@@ -423,7 +423,7 @@ public class TableSchemaTest {
     }
 
     @Test
-    public void testPrimaryKeyNoColumns() {
+    void testPrimaryKeyNoColumns() {
         assertThatThrownBy(
                         () ->
                                 TableSchema.builder()
diff --git a/flink-table/flink-table-common/src/test/java/org/apache/flink/table/api/constraints/UniqueConstraintTest.java b/flink-table/flink-table-common/src/test/java/org/apache/flink/table/api/constraints/UniqueConstraintTest.java
index d0892cbba15..e2994123e27 100644
--- a/flink-table/flink-table-common/src/test/java/org/apache/flink/table/api/constraints/UniqueConstraintTest.java
+++ b/flink-table/flink-table-common/src/test/java/org/apache/flink/table/api/constraints/UniqueConstraintTest.java
@@ -18,7 +18,7 @@
 
 package org.apache.flink.table.api.constraints;
 
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
 import java.util.Collections;
 import java.util.List;
@@ -26,10 +26,10 @@ import java.util.List;
 import static org.assertj.core.api.Assertions.assertThat;
 
 /** Tests for {@link UniqueConstraint}. */
-public class UniqueConstraintTest {
+class UniqueConstraintTest {
 
     @Test
-    public void testCreatingPrimaryKey() {
+    void testCreatingPrimaryKey() {
         String keyName = "pk";
         List<String> columns = Collections.singletonList("f0");
         UniqueConstraint primaryKey = UniqueConstraint.primaryKey(keyName, columns);
diff --git a/flink-table/flink-table-common/src/test/java/org/apache/flink/table/data/columnar/vector/ColumnVectorTest.java b/flink-table/flink-table-common/src/test/java/org/apache/flink/table/data/columnar/vector/ColumnVectorTest.java
index 42fd1fc5bb3..9d68e2b5911 100644
--- a/flink-table/flink-table-common/src/test/java/org/apache/flink/table/data/columnar/vector/ColumnVectorTest.java
+++ b/flink-table/flink-table-common/src/test/java/org/apache/flink/table/data/columnar/vector/ColumnVectorTest.java
@@ -30,7 +30,7 @@ import org.apache.flink.table.data.columnar.vector.heap.HeapShortVector;
 import org.apache.flink.table.data.columnar.vector.heap.HeapTimestampVector;
 import org.apache.flink.table.data.columnar.vector.writable.WritableColumnVector;
 
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
 import java.nio.charset.StandardCharsets;
 import java.util.stream.IntStream;
@@ -45,12 +45,12 @@ import static org.apache.flink.table.data.columnar.vector.heap.AbstractHeapVecto
 import static org.assertj.core.api.Assertions.assertThat;
 
 /** Test {@link ColumnVector}. */
-public class ColumnVectorTest {
+class ColumnVectorTest {
 
     private static final int SIZE = 10;
 
     @Test
-    public void testNulls() {
+    void testNulls() {
         HeapBooleanVector vector = new HeapBooleanVector(SIZE);
 
         for (int i = 0; i < SIZE; i++) {
@@ -83,7 +83,7 @@ public class ColumnVectorTest {
     }
 
     @Test
-    public void testBoolean() {
+    void testBoolean() {
         HeapBooleanVector vector = new HeapBooleanVector(SIZE);
 
         for (int i = 0; i < SIZE; i++) {
@@ -100,7 +100,7 @@ public class ColumnVectorTest {
     }
 
     @Test
-    public void testByte() {
+    void testByte() {
         HeapByteVector vector = new HeapByteVector(SIZE);
 
         for (int i = 0; i < SIZE; i++) {
@@ -123,7 +123,7 @@ public class ColumnVectorTest {
     }
 
     @Test
-    public void testShort() {
+    void testShort() {
         HeapShortVector vector = new HeapShortVector(SIZE);
 
         for (int i = 0; i < SIZE; i++) {
@@ -146,7 +146,7 @@ public class ColumnVectorTest {
     }
 
     @Test
-    public void testInt() {
+    void testInt() {
         HeapIntVector vector = new HeapIntVector(SIZE);
 
         for (int i = 0; i < SIZE; i++) {
@@ -184,7 +184,7 @@ public class ColumnVectorTest {
     }
 
     @Test
-    public void testLong() {
+    void testLong() {
         HeapLongVector vector = new HeapLongVector(SIZE);
 
         for (int i = 0; i < SIZE; i++) {
@@ -216,7 +216,7 @@ public class ColumnVectorTest {
     }
 
     @Test
-    public void testFloat() {
+    void testFloat() {
         HeapFloatVector vector = new HeapFloatVector(SIZE);
 
         for (int i = 0; i < SIZE; i++) {
@@ -253,7 +253,7 @@ public class ColumnVectorTest {
     }
 
     @Test
-    public void testDouble() {
+    void testDouble() {
         HeapDoubleVector vector = new HeapDoubleVector(SIZE);
 
         for (int i = 0; i < SIZE; i++) {
@@ -292,7 +292,7 @@ public class ColumnVectorTest {
     }
 
     @Test
-    public void testBytes() {
+    void testBytes() {
         HeapBytesVector vector = new HeapBytesVector(SIZE);
 
         for (int i = 0; i < SIZE; i++) {
@@ -326,7 +326,7 @@ public class ColumnVectorTest {
     }
 
     @Test
-    public void testTimestamp() {
+    void testTimestamp() {
         HeapTimestampVector vector = new HeapTimestampVector(SIZE);
 
         for (int i = 0; i < SIZE; i++) {
@@ -353,7 +353,7 @@ public class ColumnVectorTest {
     }
 
     @Test
-    public void testReserveDictIds() {
+    void testReserveDictIds() {
         HeapIntVector vector = new HeapIntVector(SIZE);
         assertThat(vector.reserveDictionaryIds(2).vector.length).isGreaterThanOrEqualTo(2);
         assertThat(vector.reserveDictionaryIds(5).vector.length).isGreaterThanOrEqualTo(5);
diff --git a/flink-table/flink-table-common/src/test/java/org/apache/flink/table/data/columnar/vector/VectorizedColumnBatchTest.java b/flink-table/flink-table-common/src/test/java/org/apache/flink/table/data/columnar/vector/VectorizedColumnBatchTest.java
index 81a0ba55145..55725c978ab 100644
--- a/flink-table/flink-table-common/src/test/java/org/apache/flink/table/data/columnar/vector/VectorizedColumnBatchTest.java
+++ b/flink-table/flink-table-common/src/test/java/org/apache/flink/table/data/columnar/vector/VectorizedColumnBatchTest.java
@@ -33,7 +33,7 @@ import org.apache.flink.table.data.columnar.vector.heap.HeapLongVector;
 import org.apache.flink.table.data.columnar.vector.heap.HeapShortVector;
 import org.apache.flink.table.utils.DateTimeUtils;
 
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
@@ -42,13 +42,13 @@ import java.nio.charset.StandardCharsets;
 import static org.assertj.core.api.Assertions.assertThat;
 
 /** Test {@link VectorizedColumnBatch}. */
-public class VectorizedColumnBatchTest {
+class VectorizedColumnBatchTest {
 
     private static final int VECTOR_SIZE = 1024;
     private static final int ARRAY_SIZE = 3;
 
     @Test
-    public void testTyped() throws IOException {
+    void testTyped() throws IOException {
         HeapBooleanVector col0 = new HeapBooleanVector(VECTOR_SIZE);
         for (int i = 0; i < VECTOR_SIZE; i++) {
             col0.vector[i] = i % 2 == 0;
@@ -256,7 +256,7 @@ public class VectorizedColumnBatchTest {
     }
 
     @Test
-    public void testNull() {
+    void testNull() {
         // all null
         HeapIntVector col0 = new HeapIntVector(VECTOR_SIZE);
         for (int i = 0; i < VECTOR_SIZE; i++) {
@@ -287,7 +287,7 @@ public class VectorizedColumnBatchTest {
     }
 
     @Test
-    public void testDictionary() {
+    void testDictionary() {
         // all null
         HeapIntVector col = new HeapIntVector(VECTOR_SIZE);
         Integer[] dict = new Integer[2];
diff --git a/flink-table/flink-table-common/src/test/java/org/apache/flink/table/data/utils/JoinedRowDataTest.java b/flink-table/flink-table-common/src/test/java/org/apache/flink/table/data/utils/JoinedRowDataTest.java
index e9b156e38d3..820ea8de346 100644
--- a/flink-table/flink-table-common/src/test/java/org/apache/flink/table/data/utils/JoinedRowDataTest.java
+++ b/flink-table/flink-table-common/src/test/java/org/apache/flink/table/data/utils/JoinedRowDataTest.java
@@ -28,10 +28,10 @@ import org.junit.jupiter.api.Test;
 import static org.apache.flink.table.test.TableAssertions.assertThat;
 
 /** Tests for {@link JoinedRowData}. */
-public class JoinedRowDataTest {
+class JoinedRowDataTest {
 
     @Test
-    public void testJoinedRows() {
+    void testJoinedRows() {
         final RowData row1 = GenericRowData.of(1L, 2L);
         final RowData row2 = GenericRowData.of(3L, StringData.fromString("4"));
         final RowData joinedRow = new JoinedRowData(row1, row2);
@@ -44,14 +44,14 @@ public class JoinedRowDataTest {
     }
 
     @Test
-    public void testJoinedRowKind() {
+    void testJoinedRowKind() {
         final RowData joinedRow =
                 new JoinedRowData(RowKind.DELETE, GenericRowData.of(), GenericRowData.of());
         assertThat(joinedRow).hasKind(RowKind.DELETE);
     }
 
     @Test
-    public void testReplace() {
+    void testReplace() {
         final RowData row1 = GenericRowData.of(1L);
         final RowData row2 = GenericRowData.of(2L);
         final JoinedRowData joinedRow = new JoinedRowData(row1, row2);
diff --git a/flink-table/flink-table-common/src/test/java/org/apache/flink/table/data/utils/ProjectedRowDataTest.java b/flink-table/flink-table-common/src/test/java/org/apache/flink/table/data/utils/ProjectedRowDataTest.java
index 30601e8d230..42f4a5b0637 100644
--- a/flink-table/flink-table-common/src/test/java/org/apache/flink/table/data/utils/ProjectedRowDataTest.java
+++ b/flink-table/flink-table-common/src/test/java/org/apache/flink/table/data/utils/ProjectedRowDataTest.java
@@ -29,10 +29,10 @@ import static org.apache.flink.table.test.TableAssertions.assertThat;
 import static org.assertj.core.api.Assertions.assertThatThrownBy;
 
 /** Tests for {@link ProjectedRowData}. */
-public class ProjectedRowDataTest {
+class ProjectedRowDataTest {
 
     @Test
-    public void testProjectedRows() {
+    void testProjectedRows() {
         final RowData initialRow = GenericRowData.of(0L, 1L, 2L, 3L, 4L);
         final ProjectedRowData projectedRowData =
                 ProjectedRowData.from(
@@ -55,7 +55,7 @@ public class ProjectedRowDataTest {
     }
 
     @Test
-    public void testProjectedRowsDoesntSupportNestedProjections() {
+    void testProjectedRowsDoesntSupportNestedProjections() {
         assertThatThrownBy(
                         () ->
                                 ProjectedRowData.from(
diff --git a/flink-table/flink-table-common/src/test/java/org/apache/flink/table/descriptors/DescriptorPropertiesTest.java b/flink-table/flink-table-common/src/test/java/org/apache/flink/table/descriptors/DescriptorPropertiesTest.java
index 19a1c4187ae..942691c3d55 100644
--- a/flink-table/flink-table-common/src/test/java/org/apache/flink/table/descriptors/DescriptorPropertiesTest.java
+++ b/flink-table/flink-table-common/src/test/java/org/apache/flink/table/descriptors/DescriptorPropertiesTest.java
@@ -25,7 +25,7 @@ import org.apache.flink.table.api.TableSchema;
 import org.apache.flink.table.api.ValidationException;
 import org.apache.flink.table.types.LogicalTypeParserTest;
 
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -36,9 +36,10 @@ import java.util.Map;
 import java.util.function.Consumer;
 
 import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
 
 /** Tests for {@link DescriptorProperties}. */
-public class DescriptorPropertiesTest {
+class DescriptorPropertiesTest {
 
     private static final String ARRAY_KEY = "my-array";
     private static final String FIXED_INDEXED_PROPERTY_KEY = "my-fixed-indexed-property";
@@ -46,7 +47,7 @@ public class DescriptorPropertiesTest {
     private static final String PROPERTY_2_KEY = "property-2";
 
     @Test
-    public void testEquals() {
+    void testEquals() {
         DescriptorProperties properties1 = new DescriptorProperties();
         properties1.putString("hello1", "12");
         properties1.putString("hello2", "13");
@@ -68,14 +69,14 @@ public class DescriptorPropertiesTest {
     }
 
     @Test
-    public void testMissingArray() {
+    void testMissingArray() {
         DescriptorProperties properties = new DescriptorProperties();
 
         testArrayValidation(properties, 0, Integer.MAX_VALUE);
     }
 
     @Test
-    public void testArrayValues() {
+    void testArrayValues() {
         DescriptorProperties properties = new DescriptorProperties();
 
         properties.putString(ARRAY_KEY + ".0", "12");
@@ -89,7 +90,7 @@ public class DescriptorPropertiesTest {
     }
 
     @Test
-    public void testArraySingleValue() {
+    void testArraySingleValue() {
         DescriptorProperties properties = new DescriptorProperties();
         properties.putString(ARRAY_KEY, "12");
 
@@ -99,44 +100,48 @@ public class DescriptorPropertiesTest {
                 .isEqualTo(Collections.singletonList(12));
     }
 
-    @Test(expected = ValidationException.class)
-    public void testArrayInvalidValues() {
+    @Test
+    void testArrayInvalidValues() {
         DescriptorProperties properties = new DescriptorProperties();
         properties.putString(ARRAY_KEY + ".0", "12");
         properties.putString(ARRAY_KEY + ".1", "66");
         properties.putString(ARRAY_KEY + ".2", "INVALID");
 
-        testArrayValidation(properties, 1, Integer.MAX_VALUE);
+        assertThatThrownBy(() -> testArrayValidation(properties, 1, Integer.MAX_VALUE))
+                .isInstanceOf(ValidationException.class);
     }
 
-    @Test(expected = ValidationException.class)
-    public void testArrayInvalidSingleValue() {
+    @Test
+    void testArrayInvalidSingleValue() {
         DescriptorProperties properties = new DescriptorProperties();
         properties.putString(ARRAY_KEY, "INVALID");
 
-        testArrayValidation(properties, 1, Integer.MAX_VALUE);
+        assertThatThrownBy(() -> testArrayValidation(properties, 1, Integer.MAX_VALUE))
+                .isInstanceOf(ValidationException.class);
     }
 
-    @Test(expected = ValidationException.class)
-    public void testInvalidMissingArray() {
+    @Test
+    void testInvalidMissingArray() {
         DescriptorProperties properties = new DescriptorProperties();
 
-        testArrayValidation(properties, 1, Integer.MAX_VALUE);
+        assertThatThrownBy(() -> testArrayValidation(properties, 1, Integer.MAX_VALUE))
+                .isInstanceOf(ValidationException.class);
     }
 
-    @Test(expected = ValidationException.class)
-    public void testInvalidFixedIndexedProperties() {
+    @Test
+    void testInvalidFixedIndexedProperties() {
         DescriptorProperties property = new DescriptorProperties();
         List<List<String>> list = new ArrayList<>();
         list.add(Arrays.asList("1", "string"));
         list.add(Arrays.asList("INVALID", "string"));
         property.putIndexedFixedProperties(
                 FIXED_INDEXED_PROPERTY_KEY, Arrays.asList(PROPERTY_1_KEY, PROPERTY_2_KEY), list);
-        testFixedIndexedPropertiesValidation(property);
+        assertThatThrownBy(() -> testFixedIndexedPropertiesValidation(property))
+                .isInstanceOf(ValidationException.class);
     }
 
     @Test
-    public void testRemoveKeys() {
+    void testRemoveKeys() {
         DescriptorProperties properties = new DescriptorProperties();
         properties.putString("hello1", "12");
         properties.putString("hello2", "13");
@@ -151,7 +156,7 @@ public class DescriptorPropertiesTest {
     }
 
     @Test
-    public void testPrefixedMap() {
+    void testPrefixedMap() {
         DescriptorProperties properties = new DescriptorProperties();
         properties.putString("hello1", "12");
         properties.putString("hello2", "13");
@@ -168,7 +173,7 @@ public class DescriptorPropertiesTest {
     }
 
     @Test
-    public void testTableSchema() {
+    void testTableSchema() {
         TableSchema schema =
                 TableSchema.builder()
                         .add(TableColumn.physical("f0", DataTypes.BIGINT().notNull()))
@@ -245,7 +250,7 @@ public class DescriptorPropertiesTest {
     }
 
     @Test
-    public void testLegacyTableSchema() {
+    void testLegacyTableSchema() {
         DescriptorProperties properties = new DescriptorProperties();
         Map<String, String> map = new HashMap<>();
         map.put("schema.0.name", "f0");
diff --git a/flink-table/flink-table-common/src/test/java/org/apache/flink/table/descriptors/DescriptorTestBase.java b/flink-table/flink-table-common/src/test/java/org/apache/flink/table/descriptors/DescriptorTestBase.java
deleted file mode 100644
index d12c9cefde3..00000000000
--- a/flink-table/flink-table-common/src/test/java/org/apache/flink/table/descriptors/DescriptorTestBase.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.flink.table.descriptors;
-
-import org.apache.flink.util.Preconditions;
-
-import org.junit.Test;
-
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-
-import static org.assertj.core.api.Assertions.assertThat;
-
-/** Test base for testing {@link Descriptor} together with {@link DescriptorValidator}. */
-public abstract class DescriptorTestBase {
-
-    /** Returns a set of valid descriptors. */
-    protected abstract List<Descriptor> descriptors();
-
-    /** Returns a set of properties for each valid descriptor. */
-    protected abstract List<Map<String, String>> properties();
-
-    /** Returns a validator that can validate all valid descriptors. */
-    protected abstract DescriptorValidator validator();
-
-    @Test
-    public void testValidation() {
-        final List<Descriptor> descriptors = descriptors();
-        if (descriptors.isEmpty()) {
-            return;
-        }
-
-        final List<Map<String, String>> properties = properties();
-
-        Preconditions.checkArgument(descriptors.size() == properties.size());
-
-        for (int i = 0; i < descriptors.size(); i++) {
-            verifyProperties(descriptors.get(i), properties.get(i));
-        }
-    }
-
-    protected void verifyProperties(Descriptor descriptor, Map<String, String> expected) {
-        // test produced properties
-        assertThat(descriptor.toProperties()).isEqualTo(expected);
-
-        // test validation logic
-        final DescriptorProperties properties = new DescriptorProperties();
-        properties.putProperties(expected);
-        validator().validate(properties);
-    }
-
-    protected void addPropertyAndVerify(Descriptor descriptor, String property, String newValue) {
-        final DescriptorProperties properties = new DescriptorProperties();
-        properties.putProperties(descriptor.toProperties());
-        final DescriptorProperties copy =
-                properties.withoutKeys(Collections.singletonList(property));
-        copy.putString(property, newValue);
-        validator().validate(copy);
-    }
-
-    protected void removePropertyAndVerify(Descriptor descriptor, String property) {
-        final DescriptorProperties properties = new DescriptorProperties();
-        properties.putProperties(descriptor.toProperties());
-        final DescriptorProperties copy =
-                properties.withoutKeys(Collections.singletonList(property));
-        validator().validate(copy);
-    }
-}
diff --git a/flink-table/flink-table-common/src/test/java/org/apache/flink/table/expressions/ExpressionTest.java b/flink-table/flink-table-common/src/test/java/org/apache/flink/table/expressions/ExpressionTest.java
index 01d5aa9213c..e677269902f 100644
--- a/flink-table/flink-table-common/src/test/java/org/apache/flink/table/expressions/ExpressionTest.java
+++ b/flink-table/flink-table-common/src/test/java/org/apache/flink/table/expressions/ExpressionTest.java
@@ -23,7 +23,7 @@ import org.apache.flink.table.api.ValidationException;
 import org.apache.flink.table.functions.ScalarFunction;
 import org.apache.flink.table.functions.ScalarFunctionDefinition;
 
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
 import java.math.BigDecimal;
 import java.nio.charset.StandardCharsets;
@@ -51,7 +51,7 @@ import static org.assertj.core.api.Assertions.assertThat;
 import static org.assertj.core.api.Assertions.assertThatThrownBy;
 
 /** Tests for {@link org.apache.flink.table.expressions.Expression} and its sub-classes. */
-public class ExpressionTest {
+class ExpressionTest {
 
     private static final ScalarFunction DUMMY_FUNCTION = new ScalarFunction() {
                 // dummy
@@ -66,17 +66,17 @@ public class ExpressionTest {
     private static final String TREE_WITH_NULL_STRING = "and(true, equals(field, dummy(null)))";
 
     @Test
-    public void testExpressionString() {
+    void testExpressionString() {
         assertThat(TREE_WITH_NULL.toString()).isEqualTo(TREE_WITH_NULL_STRING);
     }
 
     @Test
-    public void testExpressionEquality() {
+    void testExpressionEquality() {
         assertThat(TREE_WITH_SAME_VALUE).isEqualTo(TREE_WITH_VALUE);
     }
 
     @Test
-    public void testArrayValueLiteralEquality() {
+    void testArrayValueLiteralEquality() {
         assertThat(new ValueLiteralExpression(new Integer[][] {null, null, {1, 2, 3}}))
                 .isEqualTo(new ValueLiteralExpression(new Integer[][] {null, null, {1, 2, 3}}));
 
@@ -94,12 +94,12 @@ public class ExpressionTest {
     }
 
     @Test
-    public void testExpressionInequality() {
+    void testExpressionInequality() {
         assertThat(TREE_WITH_VALUE).isNotEqualTo(TREE_WITH_NULL);
     }
 
     @Test
-    public void testValueLiteralString() {
+    void testValueLiteralString() {
         assertThat(new ValueLiteralExpression(new Integer[][] {null, null, {1, 2, 3}}).toString())
                 .isEqualTo("[null, null, [1, 2, 3]]");
 
@@ -130,7 +130,7 @@ public class ExpressionTest {
     }
 
     @Test
-    public void testInvalidValueLiteral() {
+    void testInvalidValueLiteral() {
         assertThatThrownBy(() -> new ValueLiteralExpression(12, DataTypes.TINYINT().notNull()))
                 .isInstanceOf(ValidationException.class)
                 .hasMessageContaining(
@@ -138,14 +138,14 @@ public class ExpressionTest {
     }
 
     @Test
-    public void testInvalidValueLiteralExtraction() {
+    void testInvalidValueLiteralExtraction() {
         assertThatThrownBy(() -> new ValueLiteralExpression(this))
                 .isInstanceOf(ValidationException.class)
                 .hasMessageContaining("Cannot derive a data type");
     }
 
     @Test
-    public void testBigDecimalValueLiteralExtraction() {
+    void testBigDecimalValueLiteralExtraction() {
         final float f = 2.44444444443f;
         assertThat(
                         new ValueLiteralExpression(f)
@@ -156,7 +156,7 @@ public class ExpressionTest {
     }
 
     @Test
-    public void testLocalDateTimeValueLiteralExtraction() {
+    void testLocalDateTimeValueLiteralExtraction() {
         final Timestamp sqlTimestamp = Timestamp.valueOf("2006-11-03 00:00:00.123456789");
         final LocalDateTime localDateTime = LocalDateTime.of(2006, 11, 3, 0, 0, 0, 123456789);
 
@@ -168,7 +168,7 @@ public class ExpressionTest {
     }
 
     @Test
-    public void testLocalTimeValueLiteralExtraction() {
+    void testLocalTimeValueLiteralExtraction() {
         final LocalTime localTime = LocalTime.of(12, 12, 12, 123456789);
 
         final long nanos = localTime.toNanoOfDay();
@@ -197,7 +197,7 @@ public class ExpressionTest {
     }
 
     @Test
-    public void testLocalDateValueLiteralExtraction() {
+    void testLocalDateValueLiteralExtraction() {
         final LocalDate localDate = LocalDate.of(2012, 12, 12);
 
         final int daysSinceEpoch = (int) localDate.toEpochDay();
@@ -218,7 +218,7 @@ public class ExpressionTest {
     }
 
     @Test
-    public void testInstantValueLiteralExtraction() {
+    void testInstantValueLiteralExtraction() {
         final Instant instant = Instant.ofEpochMilli(100);
 
         final long millis = instant.toEpochMilli();
@@ -239,7 +239,7 @@ public class ExpressionTest {
     }
 
     @Test
-    public void testOffsetDateTimeValueLiteralExtraction() {
+    void testOffsetDateTimeValueLiteralExtraction() {
         final OffsetDateTime offsetDateTime =
                 OffsetDateTime.of(
                         LocalDateTime.parse("2012-12-12T12:12:12"),
@@ -257,7 +257,7 @@ public class ExpressionTest {
     }
 
     @Test
-    public void testSymbolValueLiteralExtraction() {
+    void testSymbolValueLiteralExtraction() {
         final TimeIntervalUnit intervalUnit = TimeIntervalUnit.DAY_TO_MINUTE;
 
         assertThat(
@@ -268,7 +268,7 @@ public class ExpressionTest {
     }
 
     @Test
-    public void testPeriodValueLiteralExtraction() {
+    void testPeriodValueLiteralExtraction() {
         Integer periodInInt = 10;
         final Period expected = Period.ofMonths(10);
         assertThat(
diff --git a/flink-table/flink-table-common/src/test/java/org/apache/flink/table/factories/FactoryUtilTest.java b/flink-table/flink-table-common/src/test/java/org/apache/flink/table/factories/FactoryUtilTest.java
index 3f3d5cc6107..45ef9bda2ec 100644
--- a/flink-table/flink-table-common/src/test/java/org/apache/flink/table/factories/FactoryUtilTest.java
+++ b/flink-table/flink-table-common/src/test/java/org/apache/flink/table/factories/FactoryUtilTest.java
@@ -57,10 +57,10 @@ import static org.assertj.core.api.Assertions.assertThat;
 import static org.assertj.core.api.Assertions.assertThatThrownBy;
 
 /** Tests for {@link FactoryUtil}. */
-public class FactoryUtilTest {
+class FactoryUtilTest {
 
     @Test
-    public void testManagedConnector() {
+    void testManagedConnector() {
         final Map<String, String> options = createAllOptions();
         options.remove("connector");
         final DynamicTableSource actualSource = createTableSource(SCHEMA, options);
@@ -68,7 +68,7 @@ public class FactoryUtilTest {
     }
 
     @Test
-    public void testInvalidConnector() {
+    void testInvalidConnector() {
         assertCreateTableSourceWithOptionModifier(
                 options -> options.put("connector", "FAIL"),
                 "Could not find any factory for identifier 'FAIL' that implements '"
@@ -79,7 +79,7 @@ public class FactoryUtilTest {
     }
 
     @Test
-    public void testConflictingConnector() {
+    void testConflictingConnector() {
         assertCreateTableSourceWithOptionModifier(
                 options -> options.put("connector", TestConflictingDynamicTableFactory1.IDENTIFIER),
                 "Multiple factories for identifier 'conflicting' that implement '"
@@ -94,7 +94,7 @@ public class FactoryUtilTest {
     }
 
     @Test
-    public void testMissingConnectorOption() {
+    void testMissingConnectorOption() {
         assertCreateTableSourceWithOptionModifier(
                 options -> options.remove("target"),
                 "One or more required options are missing.\n\n"
@@ -103,21 +103,21 @@ public class FactoryUtilTest {
     }
 
     @Test
-    public void testInvalidConnectorOption() {
+    void testInvalidConnectorOption() {
         assertCreateTableSourceWithOptionModifier(
                 options -> options.put("buffer-size", "FAIL"),
                 "Invalid value for option 'buffer-size'.");
     }
 
     @Test
-    public void testMissingFormat() {
+    void testMissingFormat() {
         assertCreateTableSourceWithOptionModifier(
                 options -> options.remove("value.format"),
                 "Could not find required scan format 'value.format'.");
     }
 
     @Test
-    public void testInvalidFormat() {
+    void testInvalidFormat() {
         assertCreateTableSourceWithOptionModifier(
                 options -> options.put("value.format", "FAIL"),
                 "Could not find any factory for identifier 'FAIL' that implements '"
@@ -128,7 +128,7 @@ public class FactoryUtilTest {
     }
 
     @Test
-    public void testMissingFormatOption() {
+    void testMissingFormatOption() {
         assertCreateTableSourceWithOptionModifier(
                 options -> options.remove("key.test-format.delimiter"),
                 "One or more required options are missing.\n\n"
@@ -138,14 +138,14 @@ public class FactoryUtilTest {
     }
 
     @Test
-    public void testInvalidFormatOption() {
+    void testInvalidFormatOption() {
         assertCreateTableSourceWithOptionModifier(
                 options -> options.put("key.test-format.fail-on-missing", "FAIL"),
                 "Invalid value for option 'fail-on-missing'.");
     }
 
     @Test
-    public void testSecretOption() {
+    void testSecretOption() {
         assertCreateTableSourceWithOptionModifier(
                 options -> {
                     options.remove("target");
@@ -165,7 +165,7 @@ public class FactoryUtilTest {
     }
 
     @Test
-    public void testUnconsumedOption() {
+    void testUnconsumedOption() {
         assertCreateTableSourceWithOptionModifier(
                 options -> {
                     options.put("this-is-not-consumed", "42");
@@ -201,7 +201,7 @@ public class FactoryUtilTest {
     }
 
     @Test
-    public void testAllOptions() {
+    void testAllOptions() {
         final Map<String, String> options = createAllOptions();
         final DynamicTableSource actualSource = createTableSource(SCHEMA, options);
         final DynamicTableSource expectedSource =
@@ -222,7 +222,7 @@ public class FactoryUtilTest {
     }
 
     @Test
-    public void testDiscoveryForSeparateSourceSinkFactory() {
+    void testDiscoveryForSeparateSourceSinkFactory() {
         final Map<String, String> options = createAllOptions();
         // the "test" source and sink factory is not in one factory class
         // see TestDynamicTableSinkFactory and TestDynamicTableSourceFactory
@@ -248,7 +248,7 @@ public class FactoryUtilTest {
     }
 
     @Test
-    public void testOptionalFormat() {
+    void testOptionalFormat() {
         final Map<String, String> options = createAllOptions();
         options.remove("key.format");
         options.remove("key.test-format.delimiter");
@@ -264,7 +264,7 @@ public class FactoryUtilTest {
     }
 
     @Test
-    public void testAlternativeValueFormat() {
+    void testAlternativeValueFormat() {
         final Map<String, String> options = createAllOptions();
         options.remove("value.format");
         options.remove("value.test-format.delimiter");
@@ -291,7 +291,7 @@ public class FactoryUtilTest {
     }
 
     @Test
-    public void testConnectorErrorHint() {
+    void testConnectorErrorHint() {
         assertThatThrownBy(
                         () ->
                                 createTableSource(
@@ -313,7 +313,7 @@ public class FactoryUtilTest {
     }
 
     @Test
-    public void testRequiredPlaceholderOption() {
+    void testRequiredPlaceholderOption() {
         final Set<ConfigOption<?>> requiredOptions = new HashSet<>();
         requiredOptions.add(ConfigOptions.key("fields.#.min").intType().noDefaultValue());
         requiredOptions.add(
@@ -326,7 +326,7 @@ public class FactoryUtilTest {
     }
 
     @Test
-    public void testCreateCatalog() {
+    void testCreateCatalog() {
         final Map<String, String> options = new HashMap<>();
         options.put(CommonCatalogOptions.CATALOG_TYPE.key(), TestCatalogFactory.IDENTIFIER);
         options.put(TestCatalogFactory.DEFAULT_DATABASE.key(), "my-database");
@@ -346,7 +346,7 @@ public class FactoryUtilTest {
     }
 
     @Test
-    public void testCatalogFactoryHelper() {
+    void testCatalogFactoryHelper() {
         final FactoryUtil.CatalogFactoryHelper helper1 =
                 FactoryUtil.createCatalogFactoryHelper(
                         new TestCatalogFactory(),
@@ -376,7 +376,7 @@ public class FactoryUtilTest {
     }
 
     @Test
-    public void testFactoryHelperWithDeprecatedOptions() {
+    void testFactoryHelperWithDeprecatedOptions() {
         final Map<String, String> options = new HashMap<>();
         options.put("deprecated-target", "MyTarget");
         options.put("fallback-buffer-size", "1000");
@@ -394,7 +394,7 @@ public class FactoryUtilTest {
     }
 
     @Test
-    public void testFactoryHelperWithEnrichmentOptions() {
+    void testFactoryHelperWithEnrichmentOptions() {
         final Map<String, String> options = new HashMap<>();
         options.put(TestDynamicTableFactory.TARGET.key(), "abc");
         options.put(TestDynamicTableFactory.BUFFER_SIZE.key(), "1000");
@@ -415,7 +415,7 @@ public class FactoryUtilTest {
     }
 
     @Test
-    public void testFactoryHelperWithEnrichmentOptionsAndFormat() {
+    void testFactoryHelperWithEnrichmentOptionsAndFormat() {
         String keyFormatPrefix =
                 FactoryUtil.getFormatPrefix(
                         TestDynamicTableFactory.KEY_FORMAT, TestFormatFactory.IDENTIFIER);
@@ -474,7 +474,7 @@ public class FactoryUtilTest {
     }
 
     @Test
-    public void testFactoryHelperWithEnrichmentOptionsMissingFormatIdentifier() {
+    void testFactoryHelperWithEnrichmentOptionsMissingFormatIdentifier() {
         final Map<String, String> options = new HashMap<>();
         options.put(TestDynamicTableFactory.TARGET.key(), "abc");
 
@@ -505,7 +505,7 @@ public class FactoryUtilTest {
     }
 
     @Test
-    public void testFactoryHelperWithEnrichmentOptionsFormatMismatch() {
+    void testFactoryHelperWithEnrichmentOptionsFormatMismatch() {
         String keyFormatPrefix =
                 FactoryUtil.getFormatPrefix(
                         TestDynamicTableFactory.KEY_FORMAT, TestFormatFactory.IDENTIFIER);
@@ -542,7 +542,7 @@ public class FactoryUtilTest {
     }
 
     @Test
-    public void testFactoryHelperWithEmptyEnrichmentOptions() {
+    void testFactoryHelperWithEmptyEnrichmentOptions() {
         final Map<String, String> options = new HashMap<>();
         options.put(TestDynamicTableFactory.TARGET.key(), "abc");
         options.put(TestDynamicTableFactory.BUFFER_SIZE.key(), "1000");
@@ -559,7 +559,7 @@ public class FactoryUtilTest {
     }
 
     @Test
-    public void testFactoryHelperWithMapOption() {
+    void testFactoryHelperWithMapOption() {
         final Map<String, String> options = new HashMap<>();
         options.put("properties.prop-1", "value-1");
         options.put("properties.prop-2", "value-2");
@@ -572,7 +572,7 @@ public class FactoryUtilTest {
     }
 
     @Test
-    public void testInvalidFactoryHelperWithMapOption() {
+    void testInvalidFactoryHelperWithMapOption() {
         final Map<String, String> options = new HashMap<>();
         options.put("properties.prop-1", "value-1");
         options.put("properties.prop-2", "value-2");
@@ -598,7 +598,7 @@ public class FactoryUtilTest {
     }
 
     @Test
-    public void testDiscoverFactoryBadClass(@TempDir Path tempDir) throws IOException {
+    void testDiscoverFactoryBadClass(@TempDir Path tempDir) throws IOException {
         // Let's prepare the classloader with a factory interface and 2 classes, one implements our
         // sub-interface of SerializationFormatFactory and the other implements only
         // SerializationFormatFactory.
diff --git a/flink-table/flink-table-common/src/test/java/org/apache/flink/table/factories/TableSinkFactoryServiceTest.java b/flink-table/flink-table-common/src/test/java/org/apache/flink/table/factories/TableSinkFactoryServiceTest.java
index e06825dfb7d..112390024ad 100644
--- a/flink-table/flink-table-common/src/test/java/org/apache/flink/table/factories/TableSinkFactoryServiceTest.java
+++ b/flink-table/flink-table-common/src/test/java/org/apache/flink/table/factories/TableSinkFactoryServiceTest.java
@@ -18,7 +18,7 @@
 
 package org.apache.flink.table.factories;
 
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
 import java.util.HashMap;
 import java.util.Map;
@@ -37,17 +37,17 @@ import static org.assertj.core.api.Assertions.assertThatThrownBy;
  * Tests for testing table sink discovery using {@link TableFactoryService}. The tests assume the
  * table sink factory {@link TestTableSinkFactory} is registered.
  */
-public class TableSinkFactoryServiceTest {
+class TableSinkFactoryServiceTest {
 
     @Test
-    public void testValidProperties() {
+    void testValidProperties() {
         Map<String, String> props = properties();
         assertThat(TableFactoryService.find(TableSinkFactory.class, props))
                 .isInstanceOf(TestTableSinkFactory.class);
     }
 
     @Test
-    public void testInvalidContext() {
+    void testInvalidContext() {
         Map<String, String> props = properties();
         props.put(CONNECTOR_TYPE, "unknown-connector-type");
         assertThatThrownBy(() -> TableFactoryService.find(TableSinkFactory.class, props))
@@ -56,7 +56,7 @@ public class TableSinkFactoryServiceTest {
     }
 
     @Test
-    public void testDifferentContextVersion() {
+    void testDifferentContextVersion() {
         Map<String, String> props = properties();
         props.put(CONNECTOR_PROPERTY_VERSION, "2");
         // the table source should still be found
@@ -65,7 +65,7 @@ public class TableSinkFactoryServiceTest {
     }
 
     @Test
-    public void testUnsupportedProperty() {
+    void testUnsupportedProperty() {
         Map<String, String> props = properties();
         props.put("format.path_new", "/new/path");
         assertThatThrownBy(() -> TableFactoryService.find(TableSinkFactory.class, props))
@@ -78,7 +78,7 @@ public class TableSinkFactoryServiceTest {
     }
 
     @Test
-    public void testMissingProperty() {
+    void testMissingProperty() {
         Map<String, String> props = properties();
         props.remove(TableFactoryService.FORMAT_TYPE);
         assertThatThrownBy(() -> TableFactoryService.find(TableSinkFactory.class, props))
@@ -91,7 +91,7 @@ public class TableSinkFactoryServiceTest {
     }
 
     @Test
-    public void testMismatchedProperty() {
+    void testMismatchedProperty() {
         Map<String, String> props = properties();
         props.put(TableFactoryService.FORMAT_TYPE, FORMAT_TYPE_VALUE_TEST + "_new");
         assertThatThrownBy(() -> TableFactoryService.find(TableSinkFactory.class, props))
@@ -104,7 +104,7 @@ public class TableSinkFactoryServiceTest {
     }
 
     @Test
-    public void testMissingAndMismatchedProperty() {
+    void testMissingAndMismatchedProperty() {
         Map<String, String> props = properties();
         props.put(TableFactoryService.FORMAT_TYPE, FORMAT_TYPE_VALUE_TEST + "_new");
         props.remove(REQUIRED_TEST);
diff --git a/flink-table/flink-table-common/src/test/java/org/apache/flink/table/factories/module/CoreModuleFactoryTest.java b/flink-table/flink-table-common/src/test/java/org/apache/flink/table/factories/module/CoreModuleFactoryTest.java
index 14b1cc9b01f..29ada0b6292 100644
--- a/flink-table/flink-table-common/src/test/java/org/apache/flink/table/factories/module/CoreModuleFactoryTest.java
+++ b/flink-table/flink-table-common/src/test/java/org/apache/flink/table/factories/module/CoreModuleFactoryTest.java
@@ -24,7 +24,7 @@ import org.apache.flink.table.module.CoreModule;
 import org.apache.flink.table.module.CoreModuleFactory;
 import org.apache.flink.table.module.Module;
 
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
 import java.util.Collections;
 
@@ -34,10 +34,10 @@ import static org.assertj.core.api.Assertions.assertThat;
  * Test for {@link org.apache.flink.table.module.CoreModule} created by {@link
  * org.apache.flink.table.module.CoreModuleFactory}.
  */
-public class CoreModuleFactoryTest {
+class CoreModuleFactoryTest {
 
     @Test
-    public void test() {
+    void test() {
         final CoreModule expectedModule = CoreModule.INSTANCE;
 
         final Module actualModule =
diff --git a/flink-table/flink-table-common/src/test/java/org/apache/flink/table/functions/UserDefinedFunctionHelperTest.java b/flink-table/flink-table-common/src/test/java/org/apache/flink/table/functions/UserDefinedFunctionHelperTest.java
index ac1c13e702d..ce0b3cb1861 100644
--- a/flink-table/flink-table-common/src/test/java/org/apache/flink/table/functions/UserDefinedFunctionHelperTest.java
+++ b/flink-table/flink-table-common/src/test/java/org/apache/flink/table/functions/UserDefinedFunctionHelperTest.java
@@ -24,7 +24,7 @@ import org.apache.flink.table.catalog.CatalogFunction;
 import org.apache.flink.table.catalog.FunctionLanguage;
 import org.apache.flink.util.Collector;
 
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 import org.junit.jupiter.params.ParameterizedTest;
 import org.junit.jupiter.params.provider.MethodSource;
 
@@ -45,11 +45,11 @@ import static org.assertj.core.api.Assertions.assertThatThrownBy;
 
 /** Tests for {@link UserDefinedFunctionHelper}. */
 @SuppressWarnings("unused")
-public class UserDefinedFunctionHelperTest {
+class UserDefinedFunctionHelperTest {
 
     @ParameterizedTest
     @MethodSource("testSpecs")
-    public void testInstantiation(TestSpec testSpec) {
+    void testInstantiation(TestSpec testSpec) {
         final Supplier<UserDefinedFunction> supplier;
         if (testSpec.functionClass != null) {
             supplier = () -> instantiateFunction(testSpec.functionClass);
@@ -77,7 +77,7 @@ public class UserDefinedFunctionHelperTest {
 
     @ParameterizedTest
     @MethodSource("testSpecs")
-    public void testValidation(TestSpec testSpec) {
+    void testValidation(TestSpec testSpec) {
         final Runnable runnable;
         if (testSpec.functionClass != null) {
             runnable = () -> validateClass(testSpec.functionClass);
@@ -98,7 +98,7 @@ public class UserDefinedFunctionHelperTest {
     }
 
     @Test
-    public void testSerialization() {
+    void testSerialization() {
         assertThat(isClassNameSerializable(new ValidTableFunction())).isTrue();
 
         assertThat(isClassNameSerializable(new ValidScalarFunction())).isTrue();
diff --git a/flink-table/flink-table-common/src/test/java/org/apache/flink/table/module/CoreModuleTest.java b/flink-table/flink-table-common/src/test/java/org/apache/flink/table/module/CoreModuleTest.java
index d8980457979..8e63d41dc9b 100644
--- a/flink-table/flink-table-common/src/test/java/org/apache/flink/table/module/CoreModuleTest.java
+++ b/flink-table/flink-table-common/src/test/java/org/apache/flink/table/module/CoreModuleTest.java
@@ -20,16 +20,16 @@ package org.apache.flink.table.module;
 
 import org.apache.flink.table.functions.BuiltInFunctionDefinition;
 
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.assertj.core.api.InstanceOfAssertFactories.type;
 
 /** Test for {@link CoreModule}. */
-public class CoreModuleTest {
+class CoreModuleTest {
 
     @Test
-    public void testListFunctions() {
+    void testListFunctions() {
         assertThat(CoreModule.INSTANCE.listFunctions(false))
                 .contains("IFNULL")
                 .doesNotContain("$REPLICATE_ROWS$1");
@@ -40,12 +40,12 @@ public class CoreModuleTest {
     }
 
     @Test
-    public void testGetNonExistFunction() {
+    void testGetNonExistFunction() {
         assertThat(CoreModule.INSTANCE.getFunctionDefinition("nonexist")).isEmpty();
     }
 
     @Test
-    public void testGetFunction() {
+    void testGetFunction() {
         assertThat(CoreModule.INSTANCE.getFunctionDefinition("CAST"))
                 .hasValueSatisfying(
                         def ->
@@ -56,7 +56,7 @@ public class CoreModuleTest {
     }
 
     @Test
-    public void testGetInternalFunction() {
+    void testGetInternalFunction() {
         assertThat(CoreModule.INSTANCE.getFunctionDefinition("$REPLICATE_ROWS$1"))
                 .hasValueSatisfying(
                         def ->
diff --git a/flink-table/flink-table-common/src/test/java/org/apache/flink/table/plan/stats/TableStatsTest.java b/flink-table/flink-table-common/src/test/java/org/apache/flink/table/plan/stats/TableStatsTest.java
index 6ad1d2a2978..87ffab4b877 100644
--- a/flink-table/flink-table-common/src/test/java/org/apache/flink/table/plan/stats/TableStatsTest.java
+++ b/flink-table/flink-table-common/src/test/java/org/apache/flink/table/plan/stats/TableStatsTest.java
@@ -18,7 +18,7 @@
 
 package org.apache.flink.table.plan.stats;
 
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
 import java.util.HashMap;
 import java.util.Map;
@@ -26,10 +26,10 @@ import java.util.Map;
 import static org.assertj.core.api.Assertions.assertThat;
 
 /** Test for {@link TableStats}. */
-public class TableStatsTest {
+class TableStatsTest {
 
     @Test
-    public void testMerge() {
+    void testMerge() {
         Map<String, ColumnStats> colStats1 = new HashMap<>();
         colStats1.put("a", new ColumnStats(4L, 5L, 2D, 3, 15, 2));
         TableStats stats1 = new TableStats(30, colStats1);
@@ -44,7 +44,7 @@ public class TableStatsTest {
     }
 
     @Test
-    public void testMergeLackColumnStats() {
+    void testMergeLackColumnStats() {
         Map<String, ColumnStats> colStats1 = new HashMap<>();
         colStats1.put("a", new ColumnStats(4L, 5L, 2D, 3, 15, 2));
         colStats1.put("b", new ColumnStats(4L, 5L, 2D, 3, 15, 2));
@@ -60,7 +60,7 @@ public class TableStatsTest {
     }
 
     @Test
-    public void testMergeUnknownRowCount() {
+    void testMergeUnknownRowCount() {
         TableStats stats1 = new TableStats(-1, new HashMap<>());
         TableStats stats2 = new TableStats(32, new HashMap<>());
         assertThat(stats1.merge(stats2)).isEqualTo(new TableStats(-1, new HashMap<>()));
@@ -75,7 +75,7 @@ public class TableStatsTest {
     }
 
     @Test
-    public void testMergeColumnStatsUnknown() {
+    void testMergeColumnStatsUnknown() {
         ColumnStats columnStats0 = new ColumnStats(4L, 5L, 2D, 3, 15, 2);
         ColumnStats columnStats1 = new ColumnStats(4L, null, 2D, 3, 15, 2);
         ColumnStats columnStats2 = new ColumnStats(4L, 5L, 2D, null, 15, 2);
diff --git a/flink-table/flink-table-common/src/test/java/org/apache/flink/table/sources/TableSourceTestBase.java b/flink-table/flink-table-common/src/test/java/org/apache/flink/table/sources/TableSourceTestBase.java
index e116f2aab44..3388265c085 100644
--- a/flink-table/flink-table-common/src/test/java/org/apache/flink/table/sources/TableSourceTestBase.java
+++ b/flink-table/flink-table-common/src/test/java/org/apache/flink/table/sources/TableSourceTestBase.java
@@ -27,7 +27,7 @@ import static org.assertj.core.api.Assertions.assertThat;
 import static org.assertj.core.api.Assumptions.assumeThat;
 
 /** Collection of tests that verify assumptions that table sources should meet. */
-public abstract class TableSourceTestBase {
+abstract class TableSourceTestBase {
 
     /**
      * Constructs a table source to be tested.
diff --git a/flink-table/flink-table-common/src/test/java/org/apache/flink/table/test/LogicalTypeAssert.java b/flink-table/flink-table-common/src/test/java/org/apache/flink/table/test/LogicalTypeAssert.java
index 771e1171b2f..4f25c48ce7e 100644
--- a/flink-table/flink-table-common/src/test/java/org/apache/flink/table/test/LogicalTypeAssert.java
+++ b/flink-table/flink-table-common/src/test/java/org/apache/flink/table/test/LogicalTypeAssert.java
@@ -37,7 +37,7 @@ import static org.assertj.core.api.Assertions.assertThatThrownBy;
 import static org.assertj.core.api.Assertions.fail;
 import static org.assertj.core.api.Assertions.not;
 
-/** Aseertions for {@link LogicalType}. */
+/** Assertions for {@link LogicalType}. */
 @Experimental
 public class LogicalTypeAssert extends AbstractAssert<LogicalTypeAssert, LogicalType> {
 
diff --git a/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/ClassDataTypeConverterTest.java b/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/ClassDataTypeConverterTest.java
index 3c9920969b0..13ae87f75bd 100644
--- a/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/ClassDataTypeConverterTest.java
+++ b/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/ClassDataTypeConverterTest.java
@@ -24,56 +24,49 @@ import org.apache.flink.table.types.logical.SymbolType;
 import org.apache.flink.table.types.utils.ClassDataTypeConverter;
 import org.apache.flink.types.Row;
 
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.Parameterized;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.Arguments;
+import org.junit.jupiter.params.provider.MethodSource;
 
 import javax.annotation.Nullable;
 
 import java.math.BigDecimal;
-import java.util.Arrays;
-import java.util.List;
+import java.util.stream.Stream;
 
 import static org.assertj.core.api.Assertions.assertThat;
+import static org.junit.jupiter.params.provider.Arguments.of;
 
 /** Tests for {@link ClassDataTypeConverter}. */
-@RunWith(Parameterized.class)
-public class ClassDataTypeConverterTest {
+class ClassDataTypeConverterTest {
 
-    @Parameterized.Parameters(name = "[{index}] class: {0} type: {1}")
-    public static List<Object[]> testData() {
-        return Arrays.asList(
-                new Object[][] {
-                    {long.class, DataTypes.BIGINT().notNull().bridgedTo(long.class)},
-                    {byte[].class, DataTypes.BYTES().nullable().bridgedTo(byte[].class)},
-                    {Long.class, DataTypes.BIGINT().nullable().bridgedTo(Long.class)},
-                    {
+    private static Stream<Arguments> testData() {
+        return Stream.of(
+                of(long.class, DataTypes.BIGINT().notNull().bridgedTo(long.class)),
+                of(byte[].class, DataTypes.BYTES().nullable().bridgedTo(byte[].class)),
+                of(Long.class, DataTypes.BIGINT().nullable().bridgedTo(Long.class)),
+                of(
                         java.sql.Time.class,
-                        DataTypes.TIME(0).nullable().bridgedTo(java.sql.Time.class)
-                    },
-                    {
+                        DataTypes.TIME(0).nullable().bridgedTo(java.sql.Time.class)),
+                of(
                         java.time.Duration.class,
-                        DataTypes.INTERVAL(DataTypes.SECOND(9)).bridgedTo(java.time.Duration.class)
-                    },
-                    {
+                        DataTypes.INTERVAL(DataTypes.SECOND(9))
+                                .bridgedTo(java.time.Duration.class)),
+                of(
                         java.time.Period.class,
                         DataTypes.INTERVAL(DataTypes.YEAR(4), DataTypes.MONTH())
-                                .bridgedTo(java.time.Period.class)
-                    },
-                    {BigDecimal.class, null},
-                    {
+                                .bridgedTo(java.time.Period.class)),
+                of(BigDecimal.class, null),
+                of(
                         byte[][].class,
                         DataTypes.ARRAY(DataTypes.BYTES().nullable().bridgedTo(byte[].class))
                                 .nullable()
-                                .bridgedTo(byte[][].class)
-                    },
-                    {
+                                .bridgedTo(byte[][].class)),
+                of(
                         Byte[].class,
                         DataTypes.ARRAY(DataTypes.TINYINT().nullable().bridgedTo(Byte.class))
                                 .nullable()
-                                .bridgedTo(Byte[].class)
-                    },
-                    {
+                                .bridgedTo(Byte[].class)),
+                of(
                         Byte[][].class,
                         DataTypes.ARRAY(
                                         DataTypes.ARRAY(
@@ -83,35 +76,26 @@ public class ClassDataTypeConverterTest {
                                                 .nullable()
                                                 .bridgedTo(Byte[].class))
                                 .nullable()
-                                .bridgedTo(Byte[][].class)
-                    },
-                    {
+                                .bridgedTo(Byte[][].class)),
+                of(
                         Integer[].class,
                         DataTypes.ARRAY(DataTypes.INT().nullable().bridgedTo(Integer.class))
                                 .nullable()
-                                .bridgedTo(Integer[].class)
-                    },
-                    {
+                                .bridgedTo(Integer[].class)),
+                of(
                         int[].class,
                         DataTypes.ARRAY(DataTypes.INT().notNull().bridgedTo(int.class))
                                 .nullable()
-                                .bridgedTo(int[].class)
-                    },
-                    {
+                                .bridgedTo(int[].class)),
+                of(
                         TimeIntervalUnit.class,
-                        new AtomicDataType(new SymbolType<>()).bridgedTo(TimeIntervalUnit.class)
-                    },
-                    {Row.class, null}
-                });
+                        new AtomicDataType(new SymbolType<>()).bridgedTo(TimeIntervalUnit.class)),
+                of(Row.class, null));
     }
 
-    @Parameterized.Parameter public Class<?> clazz;
-
-    @Parameterized.Parameter(1)
-    public @Nullable DataType dataType;
-
-    @Test
-    public void testClassToDataTypeConversion() {
+    @ParameterizedTest(name = "[{index}] class: {0} type: {1}")
+    @MethodSource("testData")
+    void testClassToDataTypeConversion(Class<?> clazz, @Nullable DataType dataType) {
         if (dataType == null) {
             assertThat(ClassDataTypeConverter.extractDataType(clazz)).isEmpty();
         } else {
diff --git a/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/DataTypeTest.java b/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/DataTypeTest.java
index 008fd9e907e..a7d824009bf 100644
--- a/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/DataTypeTest.java
+++ b/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/DataTypeTest.java
@@ -50,23 +50,23 @@ import static org.assertj.core.api.Assertions.assertThat;
 import static org.assertj.core.api.Assertions.assertThatThrownBy;
 
 /** Test for {@link DataType}. */
-public class DataTypeTest {
+class DataTypeTest {
 
     @Test
-    public void testNullability() {
+    void testNullability() {
         assertThat(BIGINT().nullable()).isNullable();
         assertThat(BIGINT().notNull()).isNotNullable();
         assertThat(BIGINT().notNull().nullable()).isNullable();
     }
 
     @Test
-    public void testAtomicConversion() {
+    void testAtomicConversion() {
         assertThat(TIMESTAMP(0).bridgedTo(java.sql.Timestamp.class))
                 .hasConversionClass(java.sql.Timestamp.class);
     }
 
     @Test
-    public void testTolerantAtomicConversion() {
+    void testTolerantAtomicConversion() {
         // this is logically only supported as input type because of
         // nullability but is tolerated until the planner complains
         // about an output type
@@ -74,19 +74,19 @@ public class DataTypeTest {
     }
 
     @Test
-    public void testInvalidAtomicConversion() {
+    void testInvalidAtomicConversion() {
         assertThatThrownBy(() -> TIMESTAMP(0).bridgedTo(DataTypesTest.class))
                 .isInstanceOf(ValidationException.class);
     }
 
     @Test
-    public void testArrayElementConversion() {
+    void testArrayElementConversion() {
         assertThat(ARRAY(ARRAY(INT().notNull().bridgedTo(int.class))))
                 .hasConversionClass(int[][].class);
     }
 
     @Test
-    public void testTolerantArrayConversion() {
+    void testTolerantArrayConversion() {
         // this is logically only supported as input type because of
         // nullability but is tolerated until the planner complains
         // about an output type
@@ -95,44 +95,44 @@ public class DataTypeTest {
     }
 
     @Test
-    public void testInvalidArrayConversion() {
+    void testInvalidArrayConversion() {
         assertThatThrownBy(() -> ARRAY(ARRAY(INT())).bridgedTo(int[][][].class))
                 .isInstanceOf(ValidationException.class);
     }
 
     @Test
-    public void testTolerantMapConversion() {
+    void testTolerantMapConversion() {
         // this doesn't make much sense logically but is supported until the planner complains
         assertThat(MULTISET(MULTISET(INT().bridgedTo(int.class)))).hasConversionClass(Map.class);
     }
 
     @Test
-    public void testFields() {
+    void testFields() {
         assertThat(ROW(FIELD("field1", CHAR(2)), FIELD("field2", BOOLEAN())))
                 .getChildren()
                 .containsExactly(CHAR(2), BOOLEAN());
     }
 
     @Test
-    public void testInvalidOrderInterval() {
+    void testInvalidOrderInterval() {
         assertThatThrownBy(() -> INTERVAL(MONTH(), YEAR(2)))
                 .isInstanceOf(ValidationException.class);
     }
 
     @Test
-    public void testConversionEquality() {
+    void testConversionEquality() {
         assertThat(DataTypes.VARCHAR(2).bridgedTo(String.class)).isEqualTo(DataTypes.VARCHAR(2));
     }
 
     @Test
-    public void testArrayInternalElementConversion() {
+    void testArrayInternalElementConversion() {
         assertThat(ARRAY(STRING()).bridgedTo(ArrayData.class))
                 .getChildren()
                 .containsExactly(STRING().bridgedTo(StringData.class));
     }
 
     @Test
-    public void testMapInternalElementConversion() {
+    void testMapInternalElementConversion() {
         assertThat(MAP(STRING(), ROW()).bridgedTo(MapData.class))
                 .getChildren()
                 .containsExactly(
@@ -140,7 +140,7 @@ public class DataTypeTest {
     }
 
     @Test
-    public void testGetFieldNames() {
+    void testGetFieldNames() {
         assertThat(
                         DataType.getFieldNames(
                                 ROW(
@@ -160,7 +160,7 @@ public class DataTypeTest {
     }
 
     @Test
-    public void testGetFieldDataTypes() {
+    void testGetFieldDataTypes() {
         assertThat(
                         DataType.getFieldDataTypes(
                                 ROW(
@@ -180,7 +180,7 @@ public class DataTypeTest {
     }
 
     @Test
-    public void testGetFieldCount() {
+    void testGetFieldCount() {
         assertThat(
                         DataType.getFieldCount(
                                 ROW(
@@ -200,7 +200,7 @@ public class DataTypeTest {
     }
 
     @Test
-    public void testGetFields() {
+    void testGetFields() {
         assertThat(
                         DataType.getFields(
                                 ROW(
diff --git a/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/DataTypesTest.java b/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/DataTypesTest.java
index a658285ba74..a90650e1762 100644
--- a/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/DataTypesTest.java
+++ b/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/DataTypesTest.java
@@ -52,11 +52,8 @@ import org.apache.flink.table.types.utils.DataTypeFactoryMock;
 import org.apache.flink.table.types.utils.LogicalTypeDataTypeConverter;
 import org.apache.flink.types.Row;
 
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.Parameterized;
-import org.junit.runners.Parameterized.Parameter;
-import org.junit.runners.Parameterized.Parameters;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.MethodSource;
 
 import javax.annotation.Nullable;
 
@@ -66,6 +63,7 @@ import java.util.Arrays;
 import java.util.List;
 import java.util.Map;
 import java.util.Optional;
+import java.util.stream.Stream;
 
 import static org.apache.flink.table.api.DataTypes.ARRAY;
 import static org.apache.flink.table.api.DataTypes.BIGINT;
@@ -105,12 +103,10 @@ import static org.apache.flink.table.types.utils.DataTypeFactoryMock.dummyRaw;
 import static org.assertj.core.api.Assertions.assertThat;
 
 /** Tests for {@link DataTypes} and {@link LogicalTypeDataTypeConverter}. */
-@RunWith(Parameterized.class)
-public class DataTypesTest {
+class DataTypesTest {
 
-    @Parameters(name = "{index}: {0}")
-    public static List<TestSpec> testData() {
-        return Arrays.asList(
+    private static Stream<TestSpec> testData() {
+        return Stream.of(
                 TestSpec.forDataType(CHAR(2))
                         .expectLogicalType(new CharType(2))
                         .expectConversionClass(String.class),
@@ -294,10 +290,9 @@ public class DataTypesTest {
                         .expectResolvedDataType(dummyRaw(DayOfWeek.class)));
     }
 
-    @Parameter public TestSpec testSpec;
-
-    @Test
-    public void testLogicalType() {
+    @ParameterizedTest(name = "{index}: {0}")
+    @MethodSource("testData")
+    void testLogicalType(TestSpec testSpec) {
         if (testSpec.expectedLogicalType != null) {
             final DataType dataType =
                     testSpec.typeFactory.createDataType(testSpec.abstractDataType);
@@ -309,16 +304,18 @@ public class DataTypesTest {
         }
     }
 
-    @Test
-    public void testConversionClass() {
+    @ParameterizedTest(name = "{index}: {0}")
+    @MethodSource("testData")
+    void testConversionClass(TestSpec testSpec) {
         if (testSpec.expectedConversionClass != null) {
             assertThat(testSpec.typeFactory.createDataType(testSpec.abstractDataType))
                     .hasConversionClass(testSpec.expectedConversionClass);
         }
     }
 
-    @Test
-    public void testChildren() {
+    @ParameterizedTest(name = "{index}: {0}")
+    @MethodSource("testData")
+    void testChildren(TestSpec testSpec) {
         if (testSpec.expectedChildren != null) {
             assertThat(testSpec.typeFactory.createDataType(testSpec.abstractDataType))
                     .getChildren()
@@ -326,16 +323,18 @@ public class DataTypesTest {
         }
     }
 
-    @Test
-    public void testUnresolvedString() {
+    @ParameterizedTest(name = "{index}: {0}")
+    @MethodSource("testData")
+    void testUnresolvedString(TestSpec testSpec) {
         if (testSpec.expectedUnresolvedString != null) {
             assertThat(testSpec.abstractDataType.toString())
                     .isEqualTo(testSpec.expectedUnresolvedString);
         }
     }
 
-    @Test
-    public void testResolvedDataType() {
+    @ParameterizedTest(name = "{index}: {0}")
+    @MethodSource("testData")
+    void testResolvedDataType(TestSpec testSpec) {
         if (testSpec.expectedResolvedDataType != null) {
             assertThat(testSpec.typeFactory.createDataType(testSpec.abstractDataType))
                     .isEqualTo(testSpec.expectedResolvedDataType);
diff --git a/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/LegacyTypeInfoDataTypeConverterTest.java b/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/LegacyTypeInfoDataTypeConverterTest.java
index 905e459bd44..1c1ef40b69d 100644
--- a/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/LegacyTypeInfoDataTypeConverterTest.java
+++ b/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/LegacyTypeInfoDataTypeConverterTest.java
@@ -31,58 +31,47 @@ import org.apache.flink.table.types.logical.TimestampType;
 import org.apache.flink.table.types.utils.LegacyTypeInfoDataTypeConverter;
 import org.apache.flink.table.typeutils.TimeIndicatorTypeInfo;
 
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.Parameterized;
-import org.junit.runners.Parameterized.Parameter;
-import org.junit.runners.Parameterized.Parameters;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.Arguments;
+import org.junit.jupiter.params.provider.MethodSource;
 
-import java.util.Arrays;
-import java.util.List;
+import java.util.stream.Stream;
 
 import static org.apache.flink.table.api.DataTypes.FIELD;
 import static org.assertj.core.api.Assertions.assertThat;
+import static org.junit.jupiter.params.provider.Arguments.of;
 
 /** Tests for {@link LegacyTypeInfoDataTypeConverter}. */
-@RunWith(Parameterized.class)
-public class LegacyTypeInfoDataTypeConverterTest {
+class LegacyTypeInfoDataTypeConverterTest {
 
-    @Parameters(name = "[{index}] type info: {0} data type: {1}")
-    public static List<Object[]> typeInfo() {
-        return Arrays.asList(
-                new Object[][] {
-                    {Types.STRING, DataTypes.STRING()},
-                    {Types.STRING, DataTypes.STRING().notNull()},
-                    {Types.BOOLEAN, DataTypes.BOOLEAN()},
-                    {
-                        Types.SQL_TIMESTAMP,
-                        DataTypes.TIMESTAMP(3).bridgedTo(java.sql.Timestamp.class)
-                    },
-                    {
+    private static Stream<Arguments> typeInfo() {
+        return Stream.of(
+                of(Types.STRING, DataTypes.STRING()),
+                of(Types.STRING, DataTypes.STRING().notNull()),
+                of(Types.BOOLEAN, DataTypes.BOOLEAN()),
+                of(Types.SQL_TIMESTAMP, DataTypes.TIMESTAMP(3).bridgedTo(java.sql.Timestamp.class)),
+                of(
                         Types.GENERIC(LegacyTypeInfoDataTypeConverterTest.class),
                         new AtomicDataType(
                                 new LegacyTypeInformationType<>(
                                         LogicalTypeRoot.RAW,
-                                        Types.GENERIC(LegacyTypeInfoDataTypeConverterTest.class)))
-                    },
-                    {
+                                        Types.GENERIC(LegacyTypeInfoDataTypeConverterTest.class)))),
+                of(
                         Types.ROW_NAMED(new String[] {"field1", "field2"}, Types.INT, Types.LONG),
                         DataTypes.ROW(
                                 FIELD("field1", DataTypes.INT()),
-                                FIELD("field2", DataTypes.BIGINT()))
-                    },
-                    {
+                                FIELD("field2", DataTypes.BIGINT()))),
+                of(
                         Types.MAP(Types.FLOAT, Types.ROW(Types.BYTE)),
                         DataTypes.MAP(
-                                DataTypes.FLOAT(), DataTypes.ROW(FIELD("f0", DataTypes.TINYINT())))
-                    },
-                    {
+                                DataTypes.FLOAT(),
+                                DataTypes.ROW(FIELD("f0", DataTypes.TINYINT())))),
+                of(
                         Types.PRIMITIVE_ARRAY(Types.FLOAT),
                         DataTypes.ARRAY(DataTypes.FLOAT().notNull().bridgedTo(float.class))
-                                .bridgedTo(float[].class)
-                    },
-                    {Types.PRIMITIVE_ARRAY(Types.BYTE), DataTypes.BYTES()},
-                    {
+                                .bridgedTo(float[].class)),
+                of(Types.PRIMITIVE_ARRAY(Types.BYTE), DataTypes.BYTES()),
+                of(
                         Types.OBJECT_ARRAY(Types.PRIMITIVE_ARRAY(Types.FLOAT)),
                         DataTypes.ARRAY(
                                         DataTypes.ARRAY(
@@ -90,54 +79,44 @@ public class LegacyTypeInfoDataTypeConverterTest {
                                                                 .notNull()
                                                                 .bridgedTo(float.class))
                                                 .bridgedTo(float[].class))
-                                .bridgedTo(float[][].class)
-                    },
-                    {
+                                .bridgedTo(float[][].class)),
+                of(
                         BasicArrayTypeInfo.STRING_ARRAY_TYPE_INFO,
                         new AtomicDataType(
                                 new LegacyTypeInformationType<>(
                                         LogicalTypeRoot.ARRAY,
-                                        BasicArrayTypeInfo.STRING_ARRAY_TYPE_INFO))
-                    },
-                    {
+                                        BasicArrayTypeInfo.STRING_ARRAY_TYPE_INFO))),
+                of(
                         ObjectArrayTypeInfo.getInfoFor(Types.STRING),
-                        DataTypes.ARRAY(DataTypes.STRING()).bridgedTo(String[].class)
-                    },
-                    {
+                        DataTypes.ARRAY(DataTypes.STRING()).bridgedTo(String[].class)),
+                of(
                         Types.TUPLE(Types.SHORT, Types.DOUBLE, Types.FLOAT),
                         new AtomicDataType(
                                 new LegacyTypeInformationType<>(
                                         LogicalTypeRoot.STRUCTURED_TYPE,
-                                        Types.TUPLE(Types.SHORT, Types.DOUBLE, Types.FLOAT)))
-                    },
-                    {
+                                        Types.TUPLE(Types.SHORT, Types.DOUBLE, Types.FLOAT)))),
+                of(
                         TimeIndicatorTypeInfo.ROWTIME_INDICATOR,
                         new AtomicDataType(new TimestampType(true, TimestampKind.ROWTIME, 3))
-                                .bridgedTo(java.sql.Timestamp.class)
-                    },
-                    {
+                                .bridgedTo(java.sql.Timestamp.class)),
+                of(
                         TimeIndicatorTypeInfo.PROCTIME_INDICATOR,
                         new AtomicDataType(
                                         new LocalZonedTimestampType(
                                                 true, TimestampKind.PROCTIME, 3))
-                                .bridgedTo(java.time.Instant.class)
-                    }
-                });
+                                .bridgedTo(java.time.Instant.class)));
     }
 
-    @Parameter public TypeInformation<?> inputTypeInfo;
-
-    @Parameter(1)
-    public DataType dataType;
-
-    @Test
-    public void testTypeInfoToDataTypeConversion() {
+    @ParameterizedTest(name = "[{index}] type info: {0} data type: {1}")
+    @MethodSource("typeInfo")
+    void testTypeInfoToDataTypeConversion(TypeInformation<?> inputTypeInfo, DataType dataType) {
         assertThat(LegacyTypeInfoDataTypeConverter.toDataType(inputTypeInfo))
                 .isEqualTo(dataType.nullable());
     }
 
-    @Test
-    public void testDataTypeToTypeInfoConversion() {
+    @ParameterizedTest(name = "[{index}] type info: {0} data type: {1}")
+    @MethodSource("typeInfo")
+    void testDataTypeToTypeInfoConversion(TypeInformation<?> inputTypeInfo, DataType dataType) {
         assertThat(LegacyTypeInfoDataTypeConverter.toLegacyTypeInfo(dataType))
                 .isEqualTo(inputTypeInfo);
     }
diff --git a/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/LogicalCommonTypeTest.java b/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/LogicalCommonTypeTest.java
index ad76ea66e30..77acab70ea4 100644
--- a/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/LogicalCommonTypeTest.java
+++ b/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/LogicalCommonTypeTest.java
@@ -44,235 +44,210 @@ import org.apache.flink.table.types.logical.YearMonthIntervalType.YearMonthResol
 import org.apache.flink.table.types.logical.ZonedTimestampType;
 import org.apache.flink.table.types.logical.utils.LogicalTypeMerging;
 
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.Parameterized;
-import org.junit.runners.Parameterized.Parameter;
-import org.junit.runners.Parameterized.Parameters;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.Arguments;
+import org.junit.jupiter.params.provider.MethodSource;
 
 import javax.annotation.Nullable;
 
 import java.util.Arrays;
 import java.util.List;
+import java.util.stream.Stream;
 
 import static org.assertj.core.api.Assertions.assertThat;
+import static org.junit.jupiter.params.provider.Arguments.of;
 
 /** Tests for {@link LogicalTypeMerging#findCommonType(List)}. */
-@RunWith(Parameterized.class)
-public class LogicalCommonTypeTest {
+class LogicalCommonTypeTest {
 
-    @Parameters(name = "{index}: [Types: {0}, To: {1}]")
-    public static List<Object[]> testData() {
-        return Arrays.asList(
-                new Object[][] {
+    private static Stream<Arguments> testData() {
+        return Stream.of(
+                // simple types
+                of(Arrays.asList(new IntType(), new IntType()), new IntType()),
 
-                    // simple types
-                    {Arrays.asList(new IntType(), new IntType()), new IntType()},
+                // incompatible types
+                of(Arrays.asList(new IntType(), new ArrayType(new IntType())), null),
 
-                    // incompatible types
-                    {Arrays.asList(new IntType(), new ArrayType(new IntType())), null},
+                // incompatible types
+                of(Arrays.asList(new IntType(), new VarCharType(23)), null),
 
-                    // incompatible types
-                    {Arrays.asList(new IntType(), new VarCharType(23)), null},
+                // incompatible types
+                of(Arrays.asList(new BinaryType(), new VarCharType(23)), null),
 
-                    // incompatible types
-                    {Arrays.asList(new BinaryType(), new VarCharType(23)), null},
+                // NOT NULL types
+                of(Arrays.asList(new IntType(false), new IntType(false)), new IntType(false)),
 
-                    // NOT NULL types
-                    {Arrays.asList(new IntType(false), new IntType(false)), new IntType(false)},
+                // NOT NULL with different types
+                of(Arrays.asList(new IntType(true), new BigIntType(false)), new BigIntType()),
 
-                    // NOT NULL with different types
-                    {Arrays.asList(new IntType(true), new BigIntType(false)), new BigIntType()},
+                // NULL only
+                of(Arrays.asList(new NullType(), new NullType()), null),
 
-                    // NULL only
-                    {Arrays.asList(new NullType(), new NullType()), null},
+                // NULL with other types
+                of(Arrays.asList(new NullType(), new IntType(), new IntType()), new IntType()),
 
-                    // NULL with other types
-                    {Arrays.asList(new NullType(), new IntType(), new IntType()), new IntType()},
-
-                    // ARRAY types with same element type
-                    {
+                // ARRAY types with same element type
+                of(
                         Arrays.asList(new ArrayType(new IntType()), new ArrayType(new IntType())),
-                        new ArrayType(new IntType())
-                    },
+                        new ArrayType(new IntType())),
 
-                    // ARRAY types with different element types
-                    {
+                // ARRAY types with different element types
+                of(
                         Arrays.asList(
                                 new ArrayType(new BigIntType()), new ArrayType(new IntType())),
-                        new ArrayType(new BigIntType())
-                    },
+                        new ArrayType(new BigIntType())),
 
-                    // MULTISET types with different element type
-                    {
+                // MULTISET types with different element type
+                of(
                         Arrays.asList(
                                 new MultisetType(new BigIntType()),
                                 new MultisetType(new IntType())),
-                        new MultisetType(new BigIntType())
-                    },
+                        new MultisetType(new BigIntType())),
 
-                    // MAP types with different element type
-                    {
+                // MAP types with different element type
+                of(
                         Arrays.asList(
                                 new MapType(new BigIntType(), new DoubleType()),
                                 new MapType(new IntType(), new DoubleType())),
-                        new MapType(new BigIntType(), new DoubleType())
-                    },
+                        new MapType(new BigIntType(), new DoubleType())),
 
-                    // ROW type with different element types
-                    {
+                // ROW type with different element types
+                of(
                         Arrays.asList(
                                 RowType.of(new IntType(), new IntType(), new BigIntType()),
                                 RowType.of(new BigIntType(), new IntType(), new IntType())),
-                        RowType.of(new BigIntType(), new IntType(), new BigIntType())
-                    },
+                        RowType.of(new BigIntType(), new IntType(), new BigIntType())),
 
-                    // CHAR types of same length
-                    {Arrays.asList(new CharType(2), new CharType(2)), new CharType(2)},
+                // CHAR types of same length
+                of(Arrays.asList(new CharType(2), new CharType(2)), new CharType(2)),
 
-                    // CHAR types of length 0
-                    {
+                // CHAR types of length 0
+                of(
                         Arrays.asList(CharType.ofEmptyLiteral(), CharType.ofEmptyLiteral()),
-                        CharType.ofEmptyLiteral()
-                    },
+                        CharType.ofEmptyLiteral()),
 
-                    // CHAR types of different length
-                    {Arrays.asList(new CharType(2), new CharType(4)), new VarCharType(4)},
+                // CHAR types of different length
+                of(Arrays.asList(new CharType(2), new CharType(4)), new VarCharType(4)),
 
-                    // VARCHAR types of different length
-                    {
+                // VARCHAR types of different length
+                of(
                         Arrays.asList(new VarCharType(2), VarCharType.STRING_TYPE),
-                        VarCharType.STRING_TYPE
-                    },
+                        VarCharType.STRING_TYPE),
 
-                    // mixed VARCHAR and CHAR types
-                    {Arrays.asList(new VarCharType(2), new CharType(5)), new VarCharType(5)},
+                // mixed VARCHAR and CHAR types
+                of(Arrays.asList(new VarCharType(2), new CharType(5)), new VarCharType(5)),
 
-                    // more mixed VARCHAR and CHAR types
-                    {
+                // more mixed VARCHAR and CHAR types
+                of(
                         Arrays.asList(new CharType(5), new VarCharType(2), new VarCharType(7)),
-                        new VarCharType(7)
-                    },
+                        new VarCharType(7)),
 
-                    // BINARY types of different length
-                    {Arrays.asList(new BinaryType(2), new BinaryType(4)), new VarBinaryType(4)},
+                // BINARY types of different length
+                of(Arrays.asList(new BinaryType(2), new BinaryType(4)), new VarBinaryType(4)),
 
-                    // mixed BINARY and VARBINARY types
-                    {
+                // mixed BINARY and VARBINARY types
+                of(
                         Arrays.asList(
                                 new BinaryType(5), new VarBinaryType(2), new VarBinaryType(7)),
-                        new VarBinaryType(7)
-                    },
+                        new VarBinaryType(7)),
 
-                    // two APPROXIMATE_NUMERIC types
-                    {Arrays.asList(new DoubleType(), new FloatType()), new DoubleType()},
+                // two APPROXIMATE_NUMERIC types
+                of(Arrays.asList(new DoubleType(), new FloatType()), new DoubleType()),
 
-                    // one APPROXIMATE_NUMERIC and one DECIMAL type
-                    {Arrays.asList(new DoubleType(), new DecimalType(2, 2)), new DoubleType()},
+                // one APPROXIMATE_NUMERIC and one DECIMAL type
+                of(Arrays.asList(new DoubleType(), new DecimalType(2, 2)), new DoubleType()),
 
-                    // one APPROXIMATE_NUMERIC and one EXACT_NUMERIC type
-                    {Arrays.asList(new IntType(), new FloatType()), new FloatType()},
+                // one APPROXIMATE_NUMERIC and one EXACT_NUMERIC type
+                of(Arrays.asList(new IntType(), new FloatType()), new FloatType()),
 
-                    // two APPROXIMATE_NUMERIC and one DECIMAL type
-                    {
+                // two APPROXIMATE_NUMERIC and one DECIMAL type
+                of(
                         Arrays.asList(new DecimalType(2, 2), new DoubleType(), new FloatType()),
-                        new DoubleType()
-                    },
+                        new DoubleType()),
 
-                    // DECIMAL precision and scale merging
-                    {
+                // DECIMAL precision and scale merging
+                of(
                         Arrays.asList(
                                 new DecimalType(2, 2),
                                 new DecimalType(5, 2),
                                 new DecimalType(7, 5)),
-                        new DecimalType(8, 5)
-                    },
+                        new DecimalType(8, 5)),
 
-                    // DECIMAL precision and scale merging with other EXACT_NUMERIC types
-                    {
+                // DECIMAL precision and scale merging with other EXACT_NUMERIC types
+                of(
                         Arrays.asList(new DecimalType(2, 2), new IntType(), new BigIntType()),
-                        new DecimalType(21, 2)
-                    },
+                        new DecimalType(21, 2)),
 
-                    // unsupported time merging
-                    {Arrays.asList(new DateType(), new DateType(), new TimeType()), null},
+                // unsupported time merging
+                of(Arrays.asList(new DateType(), new DateType(), new TimeType()), null),
 
-                    // time precision merging
-                    {
+                // time precision merging
+                of(
                         Arrays.asList(new TimeType(3), new TimeType(5), new TimeType(2)),
-                        new TimeType(5)
-                    },
+                        new TimeType(5)),
 
-                    // timestamp precision merging
-                    {
+                // timestamp precision merging
+                of(
                         Arrays.asList(
                                 new TimestampType(3), new TimestampType(5), new TimestampType(2)),
-                        new TimestampType(5)
-                    },
+                        new TimestampType(5)),
 
-                    // timestamp merging
-                    {
+                // timestamp merging
+                of(
                         Arrays.asList(
                                 new TimestampType(3),
                                 new ZonedTimestampType(5),
                                 new LocalZonedTimestampType(2)),
-                        new ZonedTimestampType(5)
-                    },
+                        new ZonedTimestampType(5)),
 
-                    // timestamp merging
-                    {
+                // timestamp merging
+                of(
                         Arrays.asList(new TimestampType(3), new LocalZonedTimestampType(2)),
-                        new LocalZonedTimestampType(3)
-                    },
+                        new LocalZonedTimestampType(3)),
 
-                    // day-time interval + DATETIME
-                    {
+                // day-time interval + DATETIME
+                of(
                         Arrays.asList(
                                 new DayTimeIntervalType(DayTimeResolution.DAY), new DateType()),
-                        new DateType()
-                    },
+                        new DateType()),
 
-                    // year-month interval + DATETIME
-                    {
+                // year-month interval + DATETIME
+                of(
                         Arrays.asList(
                                 new YearMonthIntervalType(YearMonthResolution.MONTH),
                                 new DateType()),
-                        new DateType()
-                    },
+                        new DateType()),
 
-                    // DATETIME + INTERVAL
-                    {
+                // DATETIME + INTERVAL
+                of(
                         Arrays.asList(
                                 new TimeType(), new DayTimeIntervalType(DayTimeResolution.MINUTE)),
-                        new TimeType()
-                    },
+                        new TimeType()),
 
-                    // DATETIME + INTERVAL
-                    {
+                // DATETIME + INTERVAL
+                of(
                         Arrays.asList(
                                 new DateType(), new DayTimeIntervalType(DayTimeResolution.DAY)),
-                        new DateType()
-                    },
+                        new DateType()),
 
-                    // EXACT_NUMERIC + DATE
-                    {Arrays.asList(new IntType(), new DateType()), new DateType()},
+                // EXACT_NUMERIC + DATE
+                of(Arrays.asList(new IntType(), new DateType()), new DateType()),
 
-                    // TIME + EXACT_NUMERIC
-                    {Arrays.asList(new TimeType(), new DecimalType()), null},
+                // TIME + EXACT_NUMERIC
+                of(Arrays.asList(new TimeType(), new DecimalType()), null),
 
-                    // TIMESTAMP + EXACT_NUMERIC
-                    {Arrays.asList(new TimestampType(), new DecimalType()), new TimestampType()},
+                // TIMESTAMP + EXACT_NUMERIC
+                of(Arrays.asList(new TimestampType(), new DecimalType()), new TimestampType()),
 
-                    // day-time intervals
-                    {
+                // day-time intervals
+                of(
                         Arrays.asList(
                                 new DayTimeIntervalType(DayTimeResolution.DAY_TO_MINUTE),
                                 new DayTimeIntervalType(DayTimeResolution.SECOND)),
-                        new DayTimeIntervalType(DayTimeResolution.DAY_TO_SECOND)
-                    },
+                        new DayTimeIntervalType(DayTimeResolution.DAY_TO_SECOND)),
 
-                    // day-time intervals
-                    {
+                // day-time intervals
+                of(
                         Arrays.asList(
                                 new DayTimeIntervalType(DayTimeResolution.HOUR),
                                 new DayTimeIntervalType(
@@ -282,26 +257,19 @@ public class LogicalCommonTypeTest {
                         new DayTimeIntervalType(
                                 DayTimeResolution.HOUR_TO_SECOND,
                                 DayTimeIntervalType.DEFAULT_DAY_PRECISION,
-                                6)
-                    },
+                                6)),
 
-                    // year-month intervals
-                    {
+                // year-month intervals
+                of(
                         Arrays.asList(
                                 new YearMonthIntervalType(YearMonthResolution.MONTH),
                                 new YearMonthIntervalType(YearMonthResolution.YEAR)),
-                        new YearMonthIntervalType(YearMonthResolution.YEAR_TO_MONTH)
-                    }
-                });
+                        new YearMonthIntervalType(YearMonthResolution.YEAR_TO_MONTH)));
     }
 
-    @Parameter public List<LogicalType> types;
-
-    @Parameter(1)
-    public @Nullable LogicalType commonType;
-
-    @Test
-    public void testCommonType() {
+    @ParameterizedTest(name = "{index}: [Types: {0}, To: {1}]")
+    @MethodSource("testData")
+    void testCommonType(List<LogicalType> types, @Nullable LogicalType commonType) {
         if (commonType == null) {
             assertThat(LogicalTypeMerging.findCommonType(types)).isEmpty();
         } else {
diff --git a/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/LogicalTypeCastAvoidanceTest.java b/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/LogicalTypeCastAvoidanceTest.java
index b60501aa1ab..27a050c5f90 100644
--- a/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/LogicalTypeCastAvoidanceTest.java
+++ b/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/LogicalTypeCastAvoidanceTest.java
@@ -50,91 +50,77 @@ import org.apache.flink.table.types.logical.YearMonthIntervalType;
 import org.apache.flink.table.types.logical.ZonedTimestampType;
 import org.apache.flink.table.types.logical.utils.LogicalTypeCasts;
 
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.Parameterized;
-import org.junit.runners.Parameterized.Parameter;
-import org.junit.runners.Parameterized.Parameters;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.Arguments;
+import org.junit.jupiter.params.provider.MethodSource;
 
 import java.util.Arrays;
-import java.util.List;
 import java.util.stream.Collectors;
+import java.util.stream.Stream;
 
 import static org.apache.flink.table.types.logical.utils.LogicalTypeCasts.supportsAvoidingCast;
 import static org.assertj.core.api.Assertions.assertThat;
+import static org.junit.jupiter.params.provider.Arguments.of;
 
 /** Tests for {@link LogicalTypeCasts#supportsAvoidingCast(LogicalType, LogicalType)}. */
-@RunWith(Parameterized.class)
-public class LogicalTypeCastAvoidanceTest {
+class LogicalTypeCastAvoidanceTest {
 
-    @Parameters(name = "{index}: [{0} COMPATIBLE {1} => {2}")
-    public static List<Object[]> testData() {
-        return Arrays.asList(
-                new Object[][] {
-                    {new CharType(), new CharType(5), false},
-                    {new VarCharType(30), new VarCharType(10), false},
-                    {new VarCharType(10), new VarCharType(30), true},
-                    {new CharType(10), new VarCharType(30), true},
-                    {new BinaryType(10), new VarBinaryType(30), true},
-                    {new CharType(false, 10), new VarCharType(30), true},
-                    {new BinaryType(false, 10), new VarBinaryType(30), true},
-                    {new VarCharType(30), new CharType(10), false},
-                    {new VarBinaryType(30), new BinaryType(10), false},
-                    {new BooleanType(), new BooleanType(false), false},
-                    {new BinaryType(10), new BinaryType(30), false},
-                    {new VarBinaryType(10), new VarBinaryType(30), true},
-                    {new VarBinaryType(30), new VarBinaryType(10), false},
-                    {new DecimalType(), new DecimalType(10, 2), false},
-                    {new TinyIntType(), new TinyIntType(false), false},
-                    {new SmallIntType(), new SmallIntType(false), false},
-                    {new IntType(), new IntType(false), false},
-                    {new IntType(false), new IntType(), true},
-                    {new BigIntType(), new BigIntType(false), false},
-                    {new FloatType(), new FloatType(false), false},
-                    {new DoubleType(), new DoubleType(false), false},
-                    {new DateType(), new DateType(false), false},
-                    {new TimeType(), new TimeType(9), false},
-                    {new TimestampType(9), new TimestampType(3), false},
-                    {new ZonedTimestampType(9), new ZonedTimestampType(3), false},
-                    {
+    private static Stream<Arguments> testData() {
+        return Stream.of(
+                of(new CharType(), new CharType(5), false),
+                of(new VarCharType(30), new VarCharType(10), false),
+                of(new VarCharType(10), new VarCharType(30), true),
+                of(new CharType(10), new VarCharType(30), true),
+                of(new BinaryType(10), new VarBinaryType(30), true),
+                of(new CharType(false, 10), new VarCharType(30), true),
+                of(new BinaryType(false, 10), new VarBinaryType(30), true),
+                of(new VarCharType(30), new CharType(10), false),
+                of(new VarBinaryType(30), new BinaryType(10), false),
+                of(new BooleanType(), new BooleanType(false), false),
+                of(new BinaryType(10), new BinaryType(30), false),
+                of(new VarBinaryType(10), new VarBinaryType(30), true),
+                of(new VarBinaryType(30), new VarBinaryType(10), false),
+                of(new DecimalType(), new DecimalType(10, 2), false),
+                of(new TinyIntType(), new TinyIntType(false), false),
+                of(new SmallIntType(), new SmallIntType(false), false),
+                of(new IntType(), new IntType(false), false),
+                of(new IntType(false), new IntType(), true),
+                of(new BigIntType(), new BigIntType(false), false),
+                of(new FloatType(), new FloatType(false), false),
+                of(new DoubleType(), new DoubleType(false), false),
+                of(new DateType(), new DateType(false), false),
+                of(new TimeType(), new TimeType(9), false),
+                of(new TimestampType(9), new TimestampType(3), false),
+                of(new ZonedTimestampType(9), new ZonedTimestampType(3), false),
+                of(
                         new ZonedTimestampType(false, TimestampKind.ROWTIME, 9),
                         new ZonedTimestampType(3),
-                        false
-                    },
-                    {
+                        false),
+                of(
                         new YearMonthIntervalType(
                                 YearMonthIntervalType.YearMonthResolution.YEAR_TO_MONTH, 2),
                         new YearMonthIntervalType(YearMonthIntervalType.YearMonthResolution.MONTH),
-                        false
-                    },
-                    {
+                        false),
+                of(
                         new DayTimeIntervalType(
                                 DayTimeIntervalType.DayTimeResolution.DAY_TO_SECOND, 2, 6),
                         new DayTimeIntervalType(
                                 DayTimeIntervalType.DayTimeResolution.DAY_TO_SECOND, 2, 7),
-                        false
-                    },
-                    {
-                        new ArrayType(new TimestampType()),
-                        new ArrayType(new SmallIntType()),
-                        false,
-                    },
-                    {
+                        false),
+                of(new ArrayType(new TimestampType()), new ArrayType(new SmallIntType()), false),
+                of(
                         new MultisetType(new TimestampType()),
                         new MultisetType(new SmallIntType()),
-                        false
-                    },
-                    {
+                        false),
+                of(
                         new MapType(new VarCharType(10), new TimestampType()),
                         new MapType(new VarCharType(30), new TimestampType()),
-                        true
-                    },
-                    {
+                        true),
+                of(
                         new MapType(new VarCharType(30), new TimestampType()),
                         new MapType(new VarCharType(10), new TimestampType()),
-                        false
-                    },
-                    {
+                        false),
+                of(
                         new RowType(
                                 Arrays.asList(
                                         new RowType.RowField("a", new VarCharType()),
@@ -148,9 +134,8 @@ public class LogicalTypeCastAvoidanceTest {
                                         new RowType.RowField("_c", new VarCharType()),
                                         new RowType.RowField("_d", new TimestampType()))),
                         // field name doesn't matter
-                        true
-                    },
-                    {
+                        true),
+                of(
                         new RowType(
                                 Arrays.asList(
                                         new RowField("f1", new IntType()),
@@ -159,9 +144,8 @@ public class LogicalTypeCastAvoidanceTest {
                                 Arrays.asList(
                                         new RowField("f1", new IntType()),
                                         new RowField("f2", new BooleanType()))),
-                        false
-                    },
-                    {
+                        false),
+                of(
                         new ArrayType(
                                 new RowType(
                                         Arrays.asList(
@@ -172,9 +156,8 @@ public class LogicalTypeCastAvoidanceTest {
                                         Arrays.asList(
                                                 new RowField("f3", new IntType()),
                                                 new RowField("f4", new IntType())))),
-                        true
-                    },
-                    {
+                        true),
+                of(
                         new MapType(
                                 new IntType(),
                                 new RowType(
@@ -187,9 +170,8 @@ public class LogicalTypeCastAvoidanceTest {
                                         Arrays.asList(
                                                 new RowField("f3", new IntType()),
                                                 new RowField("f4", new IntType())))),
-                        true
-                    },
-                    {
+                        true),
+                of(
                         new MultisetType(
                                 new RowType(
                                         Arrays.asList(
@@ -200,58 +182,48 @@ public class LogicalTypeCastAvoidanceTest {
                                         Arrays.asList(
                                                 new RowField("f1", new IntType()),
                                                 new RowField("f2", new IntType())))),
-                        true
-                    },
-                    {
+                        true),
+                of(
                         new TypeInformationRawType<>(Types.GENERIC(LogicalTypesTest.class)),
                         new TypeInformationRawType<>(Types.GENERIC(Object.class)),
-                        false
-                    },
-                    {
+                        false),
+                of(
                         createUserType("User", new IntType(), new VarCharType()),
                         createUserType("User", new IntType(), new VarCharType()),
-                        true
-                    },
-                    {
+                        true),
+                of(
                         createUserType("User", new IntType(), new VarCharType()),
                         createUserType("User2", new IntType(), new VarCharType()),
-                        false
-                    },
-                    {
+                        false),
+                of(
                         createDistinctType("Money", new DecimalType(10, 2)),
                         createDistinctType("Money", new DecimalType(10, 2)),
-                        true
-                    },
-                    {
+                        true),
+                of(
                         createDistinctType("Money", new DecimalType(10, 2)),
                         createDistinctType("Money2", new DecimalType(10, 2)),
-                        true
-                    },
+                        true),
 
-                    // row and structured type
-                    {
+                // row and structured type
+                of(
                         RowType.of(new IntType(), new VarCharType()),
                         createUserType("User2", new IntType(), new VarCharType()),
-                        true
-                    },
-                    {
+                        true),
+                of(
                         RowType.of(new BigIntType(), new VarCharType()),
                         createUserType("User2", new IntType(), new VarCharType()),
-                        false
-                    },
-                    {
+                        false),
+                of(
                         createUserType("User2", new IntType(), new VarCharType()),
                         RowType.of(new IntType(), new VarCharType()),
-                        true
-                    },
-                    {
+                        true),
+                of(
                         createUserType("User2", new IntType(), new VarCharType()),
                         RowType.of(new BigIntType(), new VarCharType()),
-                        false
-                    },
+                        false),
 
-                    // test slightly different children of anonymous structured types
-                    {
+                // test slightly different children of anonymous structured types
+                of(
                         StructuredType.newBuilder(Void.class)
                                 .attributes(
                                         Arrays.asList(
@@ -268,9 +240,8 @@ public class LogicalTypeCastAvoidanceTest {
                                                 new StructuredType.StructuredAttribute(
                                                         "diff", new TinyIntType(true))))
                                 .build(),
-                        true
-                    },
-                    {
+                        true),
+                of(
                         StructuredType.newBuilder(Void.class)
                                 .attributes(
                                         Arrays.asList(
@@ -287,21 +258,12 @@ public class LogicalTypeCastAvoidanceTest {
                                                 new StructuredType.StructuredAttribute(
                                                         "diff", new TinyIntType(false))))
                                 .build(),
-                        false
-                    }
-                });
+                        false));
     }
 
-    @Parameter public LogicalType sourceType;
-
-    @Parameter(1)
-    public LogicalType targetType;
-
-    @Parameter(2)
-    public boolean equals;
-
-    @Test
-    public void testSupportsAvoidingCast() {
+    @ParameterizedTest(name = "{index}: [{0} COMPATIBLE {1} => {2}")
+    @MethodSource("testData")
+    void testSupportsAvoidingCast(LogicalType sourceType, LogicalType targetType, boolean equals) {
         assertThat(supportsAvoidingCast(sourceType, targetType)).isEqualTo(equals);
         assertThat(supportsAvoidingCast(sourceType, sourceType.copy())).isTrue();
         assertThat(supportsAvoidingCast(targetType, targetType.copy())).isTrue();
diff --git a/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/LogicalTypeCastsTest.java b/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/LogicalTypeCastsTest.java
index aa18be73c2f..1106bdf50b4 100644
--- a/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/LogicalTypeCastsTest.java
+++ b/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/LogicalTypeCastsTest.java
@@ -59,7 +59,7 @@ import static org.assertj.core.api.Assertions.assertThat;
 @Execution(ExecutionMode.CONCURRENT)
 class LogicalTypeCastsTest {
 
-    public static Stream<Arguments> testData() {
+    private static Stream<Arguments> testData() {
         return Stream.of(
                 Arguments.of(new SmallIntType(), new BigIntType(), true, true),
 
diff --git a/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/LogicalTypeDuplicatorTest.java b/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/LogicalTypeDuplicatorTest.java
index 93aff7c2df4..7862817d8b9 100644
--- a/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/LogicalTypeDuplicatorTest.java
+++ b/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/LogicalTypeDuplicatorTest.java
@@ -34,53 +34,46 @@ import org.apache.flink.table.types.logical.StructuredType;
 import org.apache.flink.table.types.logical.VarCharType;
 import org.apache.flink.table.types.logical.utils.LogicalTypeDuplicator;
 
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.Parameterized;
-import org.junit.runners.Parameterized.Parameter;
-import org.junit.runners.Parameterized.Parameters;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.Arguments;
+import org.junit.jupiter.params.provider.MethodSource;
 
 import java.util.Arrays;
 import java.util.Collections;
-import java.util.List;
+import java.util.stream.Stream;
 
 import static org.assertj.core.api.Assertions.assertThat;
 
 /** Tests for {@link LogicalTypeDuplicator}. */
-@RunWith(Parameterized.class)
-public class LogicalTypeDuplicatorTest {
+class LogicalTypeDuplicatorTest {
 
     private static final LogicalTypeDuplicator DUPLICATOR = new LogicalTypeDuplicator();
 
     private static final LogicalTypeDuplicator INT_REPLACER = new IntReplacer();
 
-    @Parameters(name = "{index}: {0}")
-    public static List<Object[]> testData() {
-        return Arrays.asList(
-                new Object[][] {
-                    {new CharType(2), new CharType(2)},
-                    {createMultisetType(new IntType()), createMultisetType(new BigIntType())},
-                    {createArrayType(new IntType()), createArrayType(new BigIntType())},
-                    {createMapType(new IntType()), createMapType(new BigIntType())},
-                    {createRowType(new IntType()), createRowType(new BigIntType())},
-                    {createDistinctType(new IntType()), createDistinctType(new BigIntType())},
-                    {createUserType(new IntType()), createUserType(new BigIntType())},
-                    {createHumanType(), createHumanType()}
-                });
+    private static Stream<Arguments> testData() {
+        return Stream.of(
+                Arguments.of(new CharType(2), new CharType(2)),
+                Arguments.of(
+                        createMultisetType(new IntType()), createMultisetType(new BigIntType())),
+                Arguments.of(createArrayType(new IntType()), createArrayType(new BigIntType())),
+                Arguments.of(createMapType(new IntType()), createMapType(new BigIntType())),
+                Arguments.of(createRowType(new IntType()), createRowType(new BigIntType())),
+                Arguments.of(
+                        createDistinctType(new IntType()), createDistinctType(new BigIntType())),
+                Arguments.of(createUserType(new IntType()), createUserType(new BigIntType())),
+                Arguments.of(createHumanType(), createHumanType()));
     }
 
-    @Parameter public LogicalType logicalType;
-
-    @Parameter(1)
-    public LogicalType replacedLogicalType;
-
-    @Test
-    public void testDuplication() {
+    @ParameterizedTest(name = "{index}: {0}")
+    @MethodSource("testData")
+    void testDuplication(LogicalType logicalType, LogicalType replacedLogicalType) {
         assertThat(logicalType.accept(DUPLICATOR)).isEqualTo(logicalType);
     }
 
-    @Test
-    public void testReplacement() {
+    @ParameterizedTest(name = "{index}: {0}")
+    @MethodSource("testData")
+    void testReplacement(LogicalType logicalType, LogicalType replacedLogicalType) {
         assertThat(logicalType.accept(INT_REPLACER)).isEqualTo(replacedLogicalType);
     }
 
diff --git a/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/LogicalTypeParserTest.java b/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/LogicalTypeParserTest.java
index e51055cfbd1..c505cd3a03f 100644
--- a/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/LogicalTypeParserTest.java
+++ b/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/LogicalTypeParserTest.java
@@ -59,29 +59,24 @@ import org.apache.flink.table.types.logical.ZonedTimestampType;
 import org.apache.flink.table.types.logical.utils.LogicalTypeParser;
 import org.apache.flink.table.types.utils.TypeConversions;
 
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.Parameterized;
-import org.junit.runners.Parameterized.Parameter;
-import org.junit.runners.Parameterized.Parameters;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.MethodSource;
 
 import javax.annotation.Nullable;
 
 import java.util.Arrays;
 import java.util.Collections;
-import java.util.List;
+import java.util.stream.Stream;
 
 import static org.apache.flink.table.types.logical.LogicalTypeRoot.UNRESOLVED;
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.assertj.core.api.Assertions.assertThatThrownBy;
 
 /** Tests for {@link LogicalTypeParser}. */
-@RunWith(Parameterized.class)
 public class LogicalTypeParserTest {
 
-    @Parameters(name = "{index}: [From: {0}, To: {1}]")
-    public static List<TestSpec> testData() {
-        return Arrays.asList(
+    private static Stream<TestSpec> testData() {
+        return Stream.of(
                 TestSpec.forString("CHAR").expectType(new CharType()),
                 TestSpec.forString("CHAR NOT NULL").expectType(new CharType().copy(false)),
                 TestSpec.forString("CHAR   NOT \t\nNULL").expectType(new CharType().copy(false)),
@@ -260,18 +255,18 @@ public class LogicalTypeParserTest {
                         .expectErrorMessage("Unable to restore the RAW type"));
     }
 
-    @Parameter public TestSpec testSpec;
-
-    @Test
-    public void testParsing() {
+    @ParameterizedTest(name = "{index}: [From: {0}, To: {1}]")
+    @MethodSource("testData")
+    void testParsing(TestSpec testSpec) {
         if (testSpec.expectedType != null) {
             assertThat(LogicalTypeParser.parse(testSpec.typeString))
                     .isEqualTo(testSpec.expectedType);
         }
     }
 
-    @Test
-    public void testSerializableParsing() {
+    @ParameterizedTest(name = "{index}: [From: {0}, To: {1}]")
+    @MethodSource("testData")
+    void testSerializableParsing(TestSpec testSpec) {
         if (testSpec.expectedType != null) {
             if (!testSpec.expectedType.is(UNRESOLVED)
                     && testSpec.expectedType.getChildren().stream()
@@ -282,8 +277,9 @@ public class LogicalTypeParserTest {
         }
     }
 
-    @Test
-    public void testErrorMessage() {
+    @ParameterizedTest(name = "{index}: [From: {0}, To: {1}]")
+    @MethodSource("testData")
+    void testErrorMessage(TestSpec testSpec) {
         if (testSpec.expectedErrorMessage != null) {
             assertThatThrownBy(() -> LogicalTypeParser.parse(testSpec.typeString))
                     .isInstanceOf(ValidationException.class)
diff --git a/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/LogicalTypesTest.java b/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/LogicalTypesTest.java
index 9af21895524..6b5c771952f 100644
--- a/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/LogicalTypesTest.java
+++ b/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/LogicalTypesTest.java
@@ -62,7 +62,7 @@ import org.apache.flink.table.types.logical.ZonedTimestampType;
 import org.apache.flink.types.Row;
 
 import org.assertj.core.api.ThrowingConsumer;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
 import java.math.BigDecimal;
 import java.time.LocalDateTime;
@@ -82,7 +82,7 @@ import static org.assertj.core.api.Assertions.assertThatThrownBy;
 public class LogicalTypesTest {
 
     @Test
-    public void testCharType() {
+    void testCharType() {
         assertThat(new CharType(33))
                 .satisfies(
                         baseAssertions(
@@ -95,7 +95,7 @@ public class LogicalTypesTest {
     }
 
     @Test
-    public void testVarCharType() {
+    void testVarCharType() {
         assertThat(new VarCharType(33))
                 .satisfies(
                         baseAssertions(
@@ -108,7 +108,7 @@ public class LogicalTypesTest {
     }
 
     @Test
-    public void testVarCharTypeWithMaximumLength() {
+    void testVarCharTypeWithMaximumLength() {
         assertThat(new VarCharType(Integer.MAX_VALUE))
                 .satisfies(
                         baseAssertions(
@@ -121,7 +121,7 @@ public class LogicalTypesTest {
     }
 
     @Test
-    public void testBooleanType() {
+    void testBooleanType() {
         assertThat(new BooleanType())
                 .satisfies(
                         baseAssertions(
@@ -134,7 +134,7 @@ public class LogicalTypesTest {
     }
 
     @Test
-    public void testBinaryType() {
+    void testBinaryType() {
         assertThat(new BinaryType(22))
                 .satisfies(
                         baseAssertions(
@@ -147,7 +147,7 @@ public class LogicalTypesTest {
     }
 
     @Test
-    public void testVarBinaryType() {
+    void testVarBinaryType() {
         assertThat(new VarBinaryType(22))
                 .satisfies(
                         baseAssertions(
@@ -160,7 +160,7 @@ public class LogicalTypesTest {
     }
 
     @Test
-    public void testVarBinaryTypeWithMaximumLength() {
+    void testVarBinaryTypeWithMaximumLength() {
         assertThat(new VarBinaryType(Integer.MAX_VALUE))
                 .satisfies(
                         baseAssertions(
@@ -173,7 +173,7 @@ public class LogicalTypesTest {
     }
 
     @Test
-    public void testDecimalType() {
+    void testDecimalType() {
         assertThat(new DecimalType(10, 2))
                 .satisfies(
                         baseAssertions(
@@ -186,7 +186,7 @@ public class LogicalTypesTest {
     }
 
     @Test
-    public void testTinyIntType() {
+    void testTinyIntType() {
         assertThat(new TinyIntType())
                 .satisfies(
                         baseAssertions(
@@ -199,7 +199,7 @@ public class LogicalTypesTest {
     }
 
     @Test
-    public void testSmallIntType() {
+    void testSmallIntType() {
         assertThat(new SmallIntType())
                 .satisfies(
                         baseAssertions(
@@ -212,7 +212,7 @@ public class LogicalTypesTest {
     }
 
     @Test
-    public void testIntType() {
+    void testIntType() {
         assertThat(new IntType())
                 .satisfies(
                         baseAssertions(
@@ -225,7 +225,7 @@ public class LogicalTypesTest {
     }
 
     @Test
-    public void testBigIntType() {
+    void testBigIntType() {
         assertThat(new BigIntType())
                 .satisfies(
                         baseAssertions(
@@ -238,7 +238,7 @@ public class LogicalTypesTest {
     }
 
     @Test
-    public void testFloatType() {
+    void testFloatType() {
         assertThat(new FloatType())
                 .satisfies(
                         baseAssertions(
@@ -251,7 +251,7 @@ public class LogicalTypesTest {
     }
 
     @Test
-    public void testDoubleType() {
+    void testDoubleType() {
         assertThat(new DoubleType())
                 .satisfies(
                         baseAssertions(
@@ -264,7 +264,7 @@ public class LogicalTypesTest {
     }
 
     @Test
-    public void testDateType() {
+    void testDateType() {
         assertThat(new DateType())
                 .satisfies(
                         baseAssertions(
@@ -279,7 +279,7 @@ public class LogicalTypesTest {
     }
 
     @Test
-    public void testTimeType() {
+    void testTimeType() {
         assertThat(new TimeType(9))
                 .satisfies(
                         baseAssertions(
@@ -294,7 +294,7 @@ public class LogicalTypesTest {
     }
 
     @Test
-    public void testTimestampType() {
+    void testTimestampType() {
         assertThat(new TimestampType(9))
                 .satisfies(
                         baseAssertions(
@@ -309,7 +309,7 @@ public class LogicalTypesTest {
     }
 
     @Test
-    public void testTimestampTypeWithTimeAttribute() {
+    void testTimestampTypeWithTimeAttribute() {
         assertThat(new TimestampType(true, TimestampKind.ROWTIME, 9))
                 .satisfies(
                         baseAssertions(
@@ -324,7 +324,7 @@ public class LogicalTypesTest {
     }
 
     @Test
-    public void testZonedTimestampType() {
+    void testZonedTimestampType() {
         assertThat(new ZonedTimestampType(9))
                 .satisfies(
                         baseAssertions(
@@ -339,7 +339,7 @@ public class LogicalTypesTest {
     }
 
     @Test
-    public void testZonedTimestampTypeWithTimeAttribute() {
+    void testZonedTimestampTypeWithTimeAttribute() {
         assertThat(new ZonedTimestampType(true, TimestampKind.ROWTIME, 9))
                 .satisfies(
                         baseAssertions(
@@ -354,7 +354,7 @@ public class LogicalTypesTest {
     }
 
     @Test
-    public void testLocalZonedTimestampType() {
+    void testLocalZonedTimestampType() {
         assertThat(new LocalZonedTimestampType(9))
                 .satisfies(
                         baseAssertions(
@@ -367,7 +367,7 @@ public class LogicalTypesTest {
     }
 
     @Test
-    public void testLocalZonedTimestampTypeWithTimeAttribute() {
+    void testLocalZonedTimestampTypeWithTimeAttribute() {
         assertThat(new LocalZonedTimestampType(true, TimestampKind.ROWTIME, 9))
                 .satisfies(
                         baseAssertions(
@@ -380,7 +380,7 @@ public class LogicalTypesTest {
     }
 
     @Test
-    public void testYearMonthIntervalType() {
+    void testYearMonthIntervalType() {
         assertThat(
                         new YearMonthIntervalType(
                                 YearMonthIntervalType.YearMonthResolution.YEAR_TO_MONTH, 2))
@@ -396,7 +396,7 @@ public class LogicalTypesTest {
     }
 
     @Test
-    public void testDayTimeIntervalType() {
+    void testDayTimeIntervalType() {
         assertThat(
                         new DayTimeIntervalType(
                                 DayTimeIntervalType.DayTimeResolution.DAY_TO_SECOND, 2, 6))
@@ -414,7 +414,7 @@ public class LogicalTypesTest {
     }
 
     @Test
-    public void testArrayType() {
+    void testArrayType() {
         assertThat(new ArrayType(new TimestampType()))
                 .satisfies(
                         baseAssertions(
@@ -455,7 +455,7 @@ public class LogicalTypesTest {
     }
 
     @Test
-    public void testMultisetType() {
+    void testMultisetType() {
         assertThat(new MultisetType(new TimestampType()))
                 .satisfies(
                         baseAssertions(
@@ -478,7 +478,7 @@ public class LogicalTypesTest {
     }
 
     @Test
-    public void testMapType() {
+    void testMapType() {
         assertThat(new MapType(new VarCharType(20), new TimestampType()))
                 .satisfies(
                         baseAssertions(
@@ -491,7 +491,7 @@ public class LogicalTypesTest {
     }
 
     @Test
-    public void testRowType() {
+    void testRowType() {
         assertThat(
                         new RowType(
                                 Arrays.asList(
@@ -530,7 +530,7 @@ public class LogicalTypesTest {
     }
 
     @Test
-    public void testDistinctType() {
+    void testDistinctType() {
         assertThat(createDistinctType("Money"))
                 .satisfies(
                         baseAssertions(
@@ -543,7 +543,7 @@ public class LogicalTypesTest {
     }
 
     @Test
-    public void testStructuredType() {
+    void testStructuredType() {
         assertThat(createUserType(true, true))
                 .satisfies(
                         baseAssertions(
@@ -572,7 +572,7 @@ public class LogicalTypesTest {
     }
 
     @Test
-    public void testNullType() {
+    void testNullType() {
         assertThat(new NullType())
                 .isJavaSerializable()
                 .satisfies(nonEqualityCheckWithOtherType(new TimeType()))
@@ -585,7 +585,7 @@ public class LogicalTypesTest {
     }
 
     @Test
-    public void testTypeInformationRawType() throws Exception {
+    void testTypeInformationRawType() throws Exception {
         final TypeInformationRawType<?> rawType =
                 new TypeInformationRawType<>(Types.TUPLE(Types.STRING, Types.INT));
 
@@ -602,7 +602,7 @@ public class LogicalTypesTest {
     }
 
     @Test
-    public void testRawType() {
+    void testRawType() {
         final RawType<Human> rawType =
                 new RawType<>(
                         Human.class, new KryoSerializer<>(Human.class, new ExecutionConfig()));
@@ -642,7 +642,7 @@ public class LogicalTypesTest {
     }
 
     @Test
-    public void testSymbolType() {
+    void testSymbolType() {
         final SymbolType<?> symbolType = new SymbolType<>();
 
         assertThat(symbolType)
@@ -657,7 +657,7 @@ public class LogicalTypesTest {
     }
 
     @Test
-    public void testUnresolvedUserDefinedType() {
+    void testUnresolvedUserDefinedType() {
         final UnresolvedUserDefinedType unresolvedType =
                 new UnresolvedUserDefinedType(
                         UnresolvedIdentifier.of("catalog", "database", "Type"));
@@ -671,7 +671,7 @@ public class LogicalTypesTest {
     }
 
     @Test
-    public void testEmptyStringLiterals() {
+    void testEmptyStringLiterals() {
         final CharType charType = CharType.ofEmptyLiteral();
         final VarCharType varcharType = VarCharType.ofEmptyLiteral();
         final BinaryType binaryType = BinaryType.ofEmptyLiteral();
@@ -698,7 +698,7 @@ public class LogicalTypesTest {
     }
 
     @Test
-    public void testUnregisteredStructuredType() {
+    void testUnregisteredStructuredType() {
         final StructuredType structuredType = createUserType(false, true);
 
         assertThat(structuredType)
diff --git a/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/TypeInfoDataTypeConverterTest.java b/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/TypeInfoDataTypeConverterTest.java
index 8eedd97d215..75624d4dcf2 100644
--- a/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/TypeInfoDataTypeConverterTest.java
+++ b/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/TypeInfoDataTypeConverterTest.java
@@ -28,27 +28,21 @@ import org.apache.flink.table.api.DataTypes;
 import org.apache.flink.table.types.utils.DataTypeFactoryMock;
 import org.apache.flink.table.types.utils.TypeInfoDataTypeConverter;
 
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.Parameterized;
-import org.junit.runners.Parameterized.Parameter;
-import org.junit.runners.Parameterized.Parameters;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.MethodSource;
 
 import java.time.DayOfWeek;
-import java.util.Arrays;
-import java.util.List;
 import java.util.Optional;
+import java.util.stream.Stream;
 
 import static org.apache.flink.table.types.utils.DataTypeFactoryMock.dummyRaw;
 import static org.assertj.core.api.Assertions.assertThat;
 
 /** Tests for {@link TypeInfoDataTypeConverter}. */
-@RunWith(Parameterized.class)
-public class TypeInfoDataTypeConverterTest {
+class TypeInfoDataTypeConverterTest {
 
-    @Parameters(name = "{index}: {0}")
-    public static List<TestSpec> testData() {
-        return Arrays.asList(
+    private static Stream<TestSpec> testData() {
+        return Stream.of(
                 TestSpec.forType(Types.INT).expectDataType(DataTypes.INT().notNull()),
                 TestSpec.forType(Types.BIG_DEC)
                         .expectDataType(DataTypes.DECIMAL(38, 18).nullable()),
@@ -118,10 +112,9 @@ public class TypeInfoDataTypeConverterTest {
                         .expectDataType(dummyRaw(DayOfWeek.class)));
     }
 
-    @Parameter public TestSpec testSpec;
-
-    @Test
-    public void testConversion() {
+    @ParameterizedTest(name = "{index}: {0}")
+    @MethodSource("testData")
+    void testConversion(TestSpec testSpec) {
         assertThat(TypeInfoDataTypeConverter.toDataType(testSpec.typeFactory, testSpec.typeInfo))
                 .isEqualTo(testSpec.expectedDataType);
     }
diff --git a/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/ValueDataTypeConverterTest.java b/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/ValueDataTypeConverterTest.java
index 2b9da5125ec..8d13224258b 100644
--- a/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/ValueDataTypeConverterTest.java
+++ b/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/ValueDataTypeConverterTest.java
@@ -25,11 +25,9 @@ import org.apache.flink.table.types.logical.CharType;
 import org.apache.flink.table.types.logical.SymbolType;
 import org.apache.flink.table.types.utils.ValueDataTypeConverter;
 
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.Parameterized;
-
-import javax.annotation.Nullable;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.Arguments;
+import org.junit.jupiter.params.provider.MethodSource;
 
 import java.math.BigDecimal;
 import java.sql.Timestamp;
@@ -42,99 +40,78 @@ import java.time.Period;
 import java.time.ZoneId;
 import java.time.ZoneOffset;
 import java.time.ZonedDateTime;
-import java.util.Arrays;
-import java.util.List;
+import java.util.stream.Stream;
 
 import static org.assertj.core.api.Assertions.assertThat;
+import static org.junit.jupiter.params.provider.Arguments.of;
 
 /** Tests for {@link ValueDataTypeConverter}. */
-@RunWith(Parameterized.class)
-public class ValueDataTypeConverterTest {
+class ValueDataTypeConverterTest {
 
-    @Parameterized.Parameters(name = "[{index}] value: {0} type: {1}")
-    public static List<Object[]> testData() {
-        return Arrays.asList(
-                new Object[][] {
-                    {"Hello World", DataTypes.CHAR(11)},
-                    {"", new AtomicDataType(CharType.ofEmptyLiteral())},
-                    {new byte[] {1, 2, 3}, DataTypes.BINARY(3)},
-                    {new byte[0], new AtomicDataType(BinaryType.ofEmptyLiteral())},
-                    {BigDecimal.ZERO, DataTypes.DECIMAL(1, 0)},
-                    {new BigDecimal("12.123"), DataTypes.DECIMAL(5, 3)},
-                    {new BigDecimal("1E+36"), DataTypes.DECIMAL(37, 0)},
-                    {12, DataTypes.INT()},
-                    {LocalTime.of(13, 24, 25, 1000), DataTypes.TIME(6)},
-                    {LocalTime.of(13, 24, 25, 0), DataTypes.TIME(0)},
-                    {LocalTime.of(13, 24, 25, 1), DataTypes.TIME(9)},
-                    {LocalTime.of(13, 24, 25, 999_999_999), DataTypes.TIME(9)},
-                    {LocalDateTime.of(2019, 11, 11, 13, 24, 25, 1001), DataTypes.TIMESTAMP(9)},
-                    {
+    private static Stream<Arguments> testData() {
+        return Stream.of(
+                of("Hello World", DataTypes.CHAR(11)),
+                of("", new AtomicDataType(CharType.ofEmptyLiteral())),
+                of(new byte[] {1, 2, 3}, DataTypes.BINARY(3)),
+                of(new byte[0], new AtomicDataType(BinaryType.ofEmptyLiteral())),
+                of(BigDecimal.ZERO, DataTypes.DECIMAL(1, 0)),
+                of(new BigDecimal("12.123"), DataTypes.DECIMAL(5, 3)),
+                of(new BigDecimal("1E+36"), DataTypes.DECIMAL(37, 0)),
+                of(12, DataTypes.INT()),
+                of(LocalTime.of(13, 24, 25, 1000), DataTypes.TIME(6)),
+                of(LocalTime.of(13, 24, 25, 0), DataTypes.TIME(0)),
+                of(LocalTime.of(13, 24, 25, 1), DataTypes.TIME(9)),
+                of(LocalTime.of(13, 24, 25, 999_999_999), DataTypes.TIME(9)),
+                of(LocalDateTime.of(2019, 11, 11, 13, 24, 25, 1001), DataTypes.TIMESTAMP(9)),
+                of(
                         ZonedDateTime.of(2019, 11, 11, 13, 24, 25, 1001, ZoneId.systemDefault()),
-                        DataTypes.TIMESTAMP_WITH_TIME_ZONE(9).bridgedTo(ZonedDateTime.class)
-                    },
-                    {
+                        DataTypes.TIMESTAMP_WITH_TIME_ZONE(9).bridgedTo(ZonedDateTime.class)),
+                of(
                         OffsetDateTime.of(2019, 11, 11, 13, 24, 25, 1001, ZoneOffset.UTC),
-                        DataTypes.TIMESTAMP_WITH_TIME_ZONE(9).bridgedTo(OffsetDateTime.class)
-                    },
-                    {
+                        DataTypes.TIMESTAMP_WITH_TIME_ZONE(9).bridgedTo(OffsetDateTime.class)),
+                of(
                         Instant.ofEpochMilli(12345602021L),
-                        DataTypes.TIMESTAMP_WITH_LOCAL_TIME_ZONE(3).bridgedTo(Instant.class)
-                    },
-                    {
+                        DataTypes.TIMESTAMP_WITH_LOCAL_TIME_ZONE(3).bridgedTo(Instant.class)),
+                of(
                         Period.ofYears(1000),
                         DataTypes.INTERVAL(DataTypes.YEAR(4), DataTypes.MONTH())
-                                .bridgedTo(Period.class)
-                    },
-                    {
+                                .bridgedTo(Period.class)),
+                of(
                         Duration.ofMillis(1100),
                         DataTypes.INTERVAL(DataTypes.DAY(1), DataTypes.SECOND(1))
-                                .bridgedTo(Duration.class)
-                    },
-                    {
+                                .bridgedTo(Duration.class)),
+                of(
                         Duration.ofDays(42),
                         DataTypes.INTERVAL(DataTypes.DAY(2), DataTypes.SECOND(0))
-                                .bridgedTo(Duration.class)
-                    },
-                    {
+                                .bridgedTo(Duration.class)),
+                of(
                         Timestamp.valueOf("2018-01-01 12:13:14.123"),
-                        DataTypes.TIMESTAMP(3).bridgedTo(java.sql.Timestamp.class)
-                    },
-                    {new Integer[] {1, 2, 3}, DataTypes.ARRAY(DataTypes.INT())},
-                    {new Integer[] {1, null, 3}, DataTypes.ARRAY(DataTypes.INT())},
-                    {
+                        DataTypes.TIMESTAMP(3).bridgedTo(java.sql.Timestamp.class)),
+                of(new Integer[] {1, 2, 3}, DataTypes.ARRAY(DataTypes.INT())),
+                of(new Integer[] {1, null, 3}, DataTypes.ARRAY(DataTypes.INT())),
+                of(
                         new BigDecimal[] {
                             new BigDecimal("12.1234"),
                             new BigDecimal("42.4321"),
                             new BigDecimal("20.0000")
                         },
-                        DataTypes.ARRAY(DataTypes.DECIMAL(6, 4))
-                    },
-                    {
+                        DataTypes.ARRAY(DataTypes.DECIMAL(6, 4))),
+                of(
                         new BigDecimal[] {null, new BigDecimal("42.4321")},
-                        DataTypes.ARRAY(DataTypes.DECIMAL(6, 4))
-                    },
-                    {new Integer[0], DataTypes.ARRAY(DataTypes.INT())},
-                    {
+                        DataTypes.ARRAY(DataTypes.DECIMAL(6, 4))),
+                of(new Integer[0], DataTypes.ARRAY(DataTypes.INT())),
+                of(
                         new Integer[][] {
                             new Integer[] {1, null, 3}, new Integer[0], new Integer[] {1}
                         },
-                        DataTypes.ARRAY(DataTypes.ARRAY(DataTypes.INT()))
-                    },
-                    {
-                        TimePointUnit.HOUR,
-                        new AtomicDataType(new SymbolType<>(), TimePointUnit.class)
-                    },
-                    {new BigDecimal[0], null}
-                });
+                        DataTypes.ARRAY(DataTypes.ARRAY(DataTypes.INT()))),
+                of(TimePointUnit.HOUR, new AtomicDataType(new SymbolType<>(), TimePointUnit.class)),
+                of(new BigDecimal[0], null));
     }
 
-    @Parameterized.Parameter public Object value;
-
-    @Parameterized.Parameter(1)
-    public @Nullable DataType dataType;
-
-    @Test
-    public void testClassToDataTypeConversion() {
+    @ParameterizedTest(name = "[{index}] value: {0} type: {1}")
+    @MethodSource("testData")
+    void testClassToDataTypeConversion(Object value, DataType dataType) {
         if (dataType == null) {
             assertThat(ValueDataTypeConverter.extractDataType(value)).isEmpty();
         } else {
diff --git a/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/extraction/DataTypeExtractorTest.java b/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/extraction/DataTypeExtractorTest.java
index 591ca0fcf76..24d21fd767e 100644
--- a/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/extraction/DataTypeExtractorTest.java
+++ b/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/extraction/DataTypeExtractorTest.java
@@ -45,11 +45,8 @@ import org.apache.flink.table.types.utils.DataTypeFactoryMock;
 import org.apache.flink.types.Row;
 
 import org.hamcrest.Matcher;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.Parameterized;
-import org.junit.runners.Parameterized.Parameter;
-import org.junit.runners.Parameterized.Parameters;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.MethodSource;
 
 import javax.annotation.Nullable;
 
@@ -63,6 +60,7 @@ import java.util.List;
 import java.util.Map;
 import java.util.Optional;
 import java.util.function.Function;
+import java.util.stream.Stream;
 
 import static org.apache.flink.core.testutils.FlinkAssertions.anyCauseMatches;
 import static org.apache.flink.core.testutils.FlinkMatchers.containsCause;
@@ -71,14 +69,12 @@ import static org.apache.flink.table.types.utils.DataTypeFactoryMock.dummyRaw;
 import static org.assertj.core.api.Assertions.assertThatThrownBy;
 
 /** Tests for {@link DataTypeExtractor}. */
-@RunWith(Parameterized.class)
 @SuppressWarnings("unused")
-public class DataTypeExtractorTest {
+class DataTypeExtractorTest {
 
     @SuppressWarnings({"unchecked", "rawtypes"})
-    @Parameters(name = "{index}: {0}")
-    public static List<TestSpec> testData() {
-        return Arrays.asList(
+    private static Stream<TestSpec> testData() {
+        return Stream.of(
                 // simple extraction of INT
                 TestSpec.forType(Integer.class).expectDataType(DataTypes.INT()),
 
@@ -474,10 +470,9 @@ public class DataTypeExtractorTest {
                                         DataTypes.FIELD("string_field", DataTypes.STRING()))));
     }
 
-    @Parameter public TestSpec testSpec;
-
-    @Test
-    public void testExtraction() {
+    @ParameterizedTest(name = "{index}: {0}")
+    @MethodSource("testData")
+    void testExtraction(TestSpec testSpec) {
         if (testSpec.expectedErrorMessage != null) {
             assertThatThrownBy(() -> runExtraction(testSpec))
                     .isInstanceOf(ValidationException.class)
diff --git a/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/extraction/TypeInferenceExtractorTest.java b/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/extraction/TypeInferenceExtractorTest.java
index 2dde2f61ad0..c3e21806f92 100644
--- a/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/extraction/TypeInferenceExtractorTest.java
+++ b/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/extraction/TypeInferenceExtractorTest.java
@@ -39,11 +39,8 @@ import org.apache.flink.table.types.inference.TypeStrategy;
 import org.apache.flink.table.types.utils.DataTypeFactoryMock;
 import org.apache.flink.types.Row;
 
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.Parameterized;
-import org.junit.runners.Parameterized.Parameter;
-import org.junit.runners.Parameterized.Parameters;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.MethodSource;
 
 import javax.annotation.Nullable;
 
@@ -53,18 +50,17 @@ import java.util.List;
 import java.util.Map;
 import java.util.Optional;
 import java.util.function.Supplier;
+import java.util.stream.Stream;
 
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.assertj.core.api.Assertions.assertThatThrownBy;
 
 /** Tests for {@link TypeInferenceExtractor}. */
-@RunWith(Parameterized.class)
 @SuppressWarnings("unused")
-public class TypeInferenceExtractorTest {
+class TypeInferenceExtractorTest {
 
-    @Parameters(name = "{index}: {0}")
-    public static List<TestSpec> testData() {
-        return Arrays.asList(
+    private static Stream<TestSpec> testData() {
+        return Stream.of(
                 // function hint defines everything
                 TestSpec.forScalarFunction(FullFunctionHint.class)
                         .expectNamedArguments("i", "s")
@@ -436,10 +432,9 @@ public class TypeInferenceExtractorTest {
                                                 .bridgedTo(RowData.class))));
     }
 
-    @Parameter public TestSpec testSpec;
-
-    @Test
-    public void testArgumentNames() {
+    @ParameterizedTest(name = "{index}: {0}")
+    @MethodSource("testData")
+    void testArgumentNames(TestSpec testSpec) {
         if (testSpec.expectedArgumentNames != null) {
             assertThat(testSpec.typeInferenceExtraction.get().getNamedArguments())
                     .isEqualTo(Optional.of(testSpec.expectedArgumentNames));
@@ -449,8 +444,9 @@ public class TypeInferenceExtractorTest {
         }
     }
 
-    @Test
-    public void testArgumentTypes() {
+    @ParameterizedTest(name = "{index}: {0}")
+    @MethodSource("testData")
+    void testArgumentTypes(TestSpec testSpec) {
         if (testSpec.expectedArgumentTypes != null) {
             assertThat(testSpec.typeInferenceExtraction.get().getTypedArguments())
                     .isEqualTo(Optional.of(testSpec.expectedArgumentTypes));
@@ -460,8 +456,9 @@ public class TypeInferenceExtractorTest {
         }
     }
 
-    @Test
-    public void testInputTypeStrategy() {
+    @ParameterizedTest(name = "{index}: {0}")
+    @MethodSource("testData")
+    void testInputTypeStrategy(TestSpec testSpec) {
         if (!testSpec.expectedOutputStrategies.isEmpty()) {
             assertThat(testSpec.typeInferenceExtraction.get().getInputTypeStrategy())
                     .isEqualTo(
@@ -471,8 +468,9 @@ public class TypeInferenceExtractorTest {
         }
     }
 
-    @Test
-    public void testAccumulatorTypeStrategy() {
+    @ParameterizedTest(name = "{index}: {0}")
+    @MethodSource("testData")
+    void testAccumulatorTypeStrategy(TestSpec testSpec) {
         if (!testSpec.expectedAccumulatorStrategies.isEmpty()) {
             assertThat(
                             testSpec.typeInferenceExtraction
@@ -485,18 +483,20 @@ public class TypeInferenceExtractorTest {
         }
     }
 
-    @Test
-    public void testOutputTypeStrategy() {
+    @ParameterizedTest(name = "{index}: {0}")
+    @MethodSource("testData")
+    void testOutputTypeStrategy(TestSpec testSpec) {
         if (!testSpec.expectedOutputStrategies.isEmpty()) {
             assertThat(testSpec.typeInferenceExtraction.get().getOutputTypeStrategy())
                     .isEqualTo(TypeStrategies.mapping(testSpec.expectedOutputStrategies));
         }
     }
 
-    @Test
-    public void testErrorMessage() {
+    @ParameterizedTest(name = "{index}: {0}")
+    @MethodSource("testData")
+    void testErrorMessage(TestSpec testSpec) {
         if (testSpec.expectedErrorMessage != null) {
-            assertThatThrownBy(() -> testSpec.typeInferenceExtraction.get())
+            assertThatThrownBy(testSpec.typeInferenceExtraction::get)
                     .isInstanceOf(ValidationException.class)
                     .satisfies(
                             FlinkAssertions.anyCauseMatches(
diff --git a/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/inference/ComparableInputTypeStrategyTest.java b/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/inference/ComparableInputTypeStrategyTest.java
index ae33a5b130d..4e10f34ed26 100644
--- a/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/inference/ComparableInputTypeStrategyTest.java
+++ b/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/inference/ComparableInputTypeStrategyTest.java
@@ -33,24 +33,22 @@ import org.apache.flink.table.types.logical.DistinctType;
 import org.apache.flink.table.types.logical.StructuredType;
 import org.apache.flink.table.types.logical.StructuredType.StructuredComparison;
 
-import org.junit.runners.Parameterized;
-
 import javax.annotation.Nonnull;
 
 import java.lang.reflect.Field;
 import java.util.List;
 import java.util.stream.Collectors;
 import java.util.stream.IntStream;
+import java.util.stream.Stream;
 
-import static java.util.Arrays.asList;
 import static java.util.Collections.singletonList;
 
 /** Tests for {@link ComparableTypeStrategy}. */
-public class ComparableInputTypeStrategyTest extends InputTypeStrategiesTestBase {
+class ComparableInputTypeStrategyTest extends InputTypeStrategiesTestBase {
 
-    @Parameterized.Parameters(name = "{index}: {0}")
-    public static List<TestSpec> testData() {
-        return asList(
+    @Override
+    protected Stream<TestSpec> testData() {
+        return Stream.of(
                 TestSpec.forStrategy(
                                 "Numeric types are comparable",
                                 InputTypeStrategies.comparable(
diff --git a/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/inference/InputTypeStrategiesTest.java b/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/inference/InputTypeStrategiesTest.java
index 59b8d19fd08..b26d04bf42b 100644
--- a/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/inference/InputTypeStrategiesTest.java
+++ b/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/inference/InputTypeStrategiesTest.java
@@ -24,11 +24,8 @@ import org.apache.flink.table.types.inference.strategies.SpecificInputTypeStrate
 import org.apache.flink.table.types.logical.LogicalTypeFamily;
 import org.apache.flink.table.types.logical.LogicalTypeRoot;
 
-import org.junit.runners.Parameterized.Parameters;
+import java.util.stream.Stream;
 
-import java.util.List;
-
-import static java.util.Arrays.asList;
 import static org.apache.flink.table.types.inference.InputTypeStrategies.ANY;
 import static org.apache.flink.table.types.inference.InputTypeStrategies.LITERAL;
 import static org.apache.flink.table.types.inference.InputTypeStrategies.LITERAL_OR_NULL;
@@ -44,11 +41,11 @@ import static org.apache.flink.table.types.inference.InputTypeStrategies.sequenc
 import static org.apache.flink.table.types.inference.InputTypeStrategies.varyingSequence;
 
 /** Tests for built-in {@link InputTypeStrategies}. */
-public class InputTypeStrategiesTest extends InputTypeStrategiesTestBase {
+class InputTypeStrategiesTest extends InputTypeStrategiesTestBase {
 
-    @Parameters(name = "{index}: {0}")
-    public static List<TestSpec> testData() {
-        return asList(
+    @Override
+    protected Stream<TestSpec> testData() {
+        return Stream.of(
                 // wildcard with 2 arguments
                 TestSpec.forStrategy(WILDCARD)
                         .calledWithArgumentTypes(DataTypes.INT(), DataTypes.INT())
diff --git a/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/inference/InputTypeStrategiesTestBase.java b/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/inference/InputTypeStrategiesTestBase.java
index 527d3105496..73c9e610119 100644
--- a/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/inference/InputTypeStrategiesTestBase.java
+++ b/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/inference/InputTypeStrategiesTestBase.java
@@ -27,9 +27,9 @@ import org.apache.flink.table.types.inference.utils.CallContextMock;
 import org.apache.flink.table.types.inference.utils.FunctionDefinitionMock;
 import org.apache.flink.table.types.utils.DataTypeFactoryMock;
 
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.Parameterized;
+import org.junit.jupiter.api.TestInstance;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.MethodSource;
 
 import javax.annotation.Nullable;
 
@@ -39,45 +39,50 @@ import java.util.List;
 import java.util.Optional;
 import java.util.stream.Collectors;
 import java.util.stream.IntStream;
+import java.util.stream.Stream;
 
 import static org.apache.flink.core.testutils.FlinkAssertions.anyCauseMatches;
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.assertj.core.api.Assertions.assertThatThrownBy;
 
 /** Base class for testing {@link InputTypeStrategy}. */
-@RunWith(Parameterized.class)
+@TestInstance(TestInstance.Lifecycle.PER_CLASS)
 public abstract class InputTypeStrategiesTestBase {
 
-    @Parameterized.Parameter public TestSpec testSpec;
-
-    @Test
-    public void testStrategy() {
+    @ParameterizedTest(name = "{index}: {0}")
+    @MethodSource("testData")
+    void testStrategy(TestSpec testSpec) {
         if (testSpec.expectedSignature != null) {
-            assertThat(generateSignature()).isEqualTo(testSpec.expectedSignature);
+            assertThat(generateSignature(testSpec)).isEqualTo(testSpec.expectedSignature);
         }
         for (List<DataType> actualArgumentTypes : testSpec.actualArgumentTypes) {
             if (testSpec.expectedErrorMessage != null) {
-                assertThatThrownBy(() -> runTypeInference(actualArgumentTypes))
+                assertThatThrownBy(() -> runTypeInference(actualArgumentTypes, testSpec))
                         .satisfies(
                                 anyCauseMatches(
                                         ValidationException.class, testSpec.expectedErrorMessage));
             } else if (testSpec.expectedArgumentTypes != null) {
-                assertThat(runTypeInference(actualArgumentTypes).getExpectedArgumentTypes())
+                assertThat(
+                                runTypeInference(actualArgumentTypes, testSpec)
+                                        .getExpectedArgumentTypes())
                         .isEqualTo(testSpec.expectedArgumentTypes);
             }
         }
     }
 
+    protected abstract Stream<TestSpec> testData();
+
     // --------------------------------------------------------------------------------------------
 
-    private String generateSignature() {
+    private String generateSignature(TestSpec testSpec) {
         final FunctionDefinitionMock functionDefinitionMock = new FunctionDefinitionMock();
         functionDefinitionMock.functionKind = FunctionKind.SCALAR;
         return TypeInferenceUtil.generateSignature(
-                createTypeInference(), "f", functionDefinitionMock);
+                createTypeInference(testSpec), "f", functionDefinitionMock);
     }
 
-    private TypeInferenceUtil.Result runTypeInference(List<DataType> actualArgumentTypes) {
+    private TypeInferenceUtil.Result runTypeInference(
+            List<DataType> actualArgumentTypes, TestSpec testSpec) {
         final FunctionDefinitionMock functionDefinitionMock = new FunctionDefinitionMock();
         functionDefinitionMock.functionKind = FunctionKind.SCALAR;
 
@@ -123,10 +128,10 @@ public abstract class InputTypeStrategiesTestBase {
             surroundingInfo = null;
         }
         return TypeInferenceUtil.runTypeInference(
-                createTypeInference(), callContextMock, surroundingInfo);
+                createTypeInference(testSpec), callContextMock, surroundingInfo);
     }
 
-    private TypeInference createTypeInference() {
+    private TypeInference createTypeInference(TestSpec testSpec) {
         final TypeInference.Builder builder =
                 TypeInference.newBuilder()
                         .inputTypeStrategy(testSpec.strategy)
diff --git a/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/inference/MappingTypeStrategiesTest.java b/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/inference/MappingTypeStrategiesTest.java
index be59f1dbf78..3c0cc6c8597 100644
--- a/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/inference/MappingTypeStrategiesTest.java
+++ b/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/inference/MappingTypeStrategiesTest.java
@@ -20,21 +20,18 @@ package org.apache.flink.table.types.inference;
 
 import org.apache.flink.table.api.DataTypes;
 
-import org.junit.runners.Parameterized;
-
-import java.util.Arrays;
 import java.util.HashMap;
-import java.util.List;
 import java.util.Map;
+import java.util.stream.Stream;
 
 import static org.apache.flink.table.types.inference.TypeStrategies.explicit;
 
 /** Tests for {@link TypeStrategies#mapping(Map)}. */
-public class MappingTypeStrategiesTest extends TypeStrategiesTestBase {
+class MappingTypeStrategiesTest extends TypeStrategiesTestBase {
 
-    @Parameterized.Parameters(name = "{index}: {0}")
-    public static List<TestSpec> testData() {
-        return Arrays.asList(
+    @Override
+    protected Stream<TestSpec> testData() {
+        return Stream.of(
                 // (INT, BOOLEAN) -> STRING
                 TestSpec.forStrategy(createMappingTypeStrategy())
                         .inputTypes(DataTypes.INT(), DataTypes.BOOLEAN())
diff --git a/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/inference/SubsequenceInputTypeStrategyTest.java b/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/inference/SubsequenceInputTypeStrategyTest.java
index 37a0470711e..2286d1ccd86 100644
--- a/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/inference/SubsequenceInputTypeStrategyTest.java
+++ b/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/inference/SubsequenceInputTypeStrategyTest.java
@@ -23,11 +23,8 @@ import org.apache.flink.table.types.inference.strategies.SubsequenceInputTypeStr
 import org.apache.flink.table.types.logical.LogicalTypeFamily;
 import org.apache.flink.table.types.logical.LogicalTypeRoot;
 
-import org.junit.runners.Parameterized;
+import java.util.stream.Stream;
 
-import java.util.List;
-
-import static java.util.Arrays.asList;
 import static org.apache.flink.table.types.inference.InputTypeStrategies.ANY;
 import static org.apache.flink.table.types.inference.InputTypeStrategies.commonType;
 import static org.apache.flink.table.types.inference.InputTypeStrategies.explicit;
@@ -35,10 +32,11 @@ import static org.apache.flink.table.types.inference.InputTypeStrategies.logical
 import static org.apache.flink.table.types.inference.InputTypeStrategies.varyingSequence;
 
 /** Tests for {@link SubsequenceInputTypeStrategy}. */
-public class SubsequenceInputTypeStrategyTest extends InputTypeStrategiesTestBase {
-    @Parameterized.Parameters(name = "{index}: {0}")
-    public static List<TestSpec> testData() {
-        return asList(
+class SubsequenceInputTypeStrategyTest extends InputTypeStrategiesTestBase {
+
+    @Override
+    protected Stream<TestSpec> testData() {
+        return Stream.of(
                 TestSpec.forStrategy(
                                 "A strategy used for IF ELSE with valid arguments",
                                 InputTypeStrategies.compositeSequence()
diff --git a/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/inference/TypeStrategiesTest.java b/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/inference/TypeStrategiesTest.java
index 448ca28f7ac..63172b5c02d 100644
--- a/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/inference/TypeStrategiesTest.java
+++ b/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/inference/TypeStrategiesTest.java
@@ -22,11 +22,8 @@ import org.apache.flink.table.api.DataTypes;
 import org.apache.flink.table.types.logical.LogicalTypeFamily;
 import org.apache.flink.table.types.logical.utils.LogicalTypeMerging;
 
-import org.junit.runners.Parameterized;
-
-import java.util.Arrays;
-import java.util.List;
 import java.util.Optional;
+import java.util.stream.Stream;
 
 import static org.apache.flink.table.types.inference.TypeStrategies.MISSING;
 import static org.apache.flink.table.types.inference.TypeStrategies.argument;
@@ -36,11 +33,11 @@ import static org.apache.flink.table.types.inference.TypeStrategies.nullableIfAr
 import static org.apache.flink.table.types.inference.TypeStrategies.varyingString;
 
 /** Tests for built-in {@link TypeStrategies}. */
-public class TypeStrategiesTest extends TypeStrategiesTestBase {
+class TypeStrategiesTest extends TypeStrategiesTestBase {
 
-    @Parameterized.Parameters(name = "{index}: {0}")
-    public static List<TypeStrategiesTestBase.TestSpec> testData() {
-        return Arrays.asList(
+    @Override
+    protected Stream<TestSpec> testData() {
+        return Stream.of(
                 // missing strategy with arbitrary argument
                 TypeStrategiesTestBase.TestSpec.forStrategy(MISSING)
                         .inputTypes(DataTypes.INT())
diff --git a/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/inference/TypeStrategiesTestBase.java b/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/inference/TypeStrategiesTestBase.java
index f29e960193f..94a95e186de 100644
--- a/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/inference/TypeStrategiesTestBase.java
+++ b/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/inference/TypeStrategiesTestBase.java
@@ -24,10 +24,9 @@ import org.apache.flink.table.types.DataType;
 import org.apache.flink.table.types.inference.utils.CallContextMock;
 import org.apache.flink.table.types.inference.utils.FunctionDefinitionMock;
 
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.Parameterized;
-import org.junit.runners.Parameterized.Parameter;
+import org.junit.jupiter.api.TestInstance;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.MethodSource;
 
 import javax.annotation.Nullable;
 
@@ -36,32 +35,35 @@ import java.util.List;
 import java.util.Optional;
 import java.util.stream.Collectors;
 import java.util.stream.IntStream;
+import java.util.stream.Stream;
 
 import static org.apache.flink.core.testutils.FlinkAssertions.anyCauseMatches;
 import static org.apache.flink.table.test.TableAssertions.assertThat;
 import static org.assertj.core.api.Assertions.assertThatThrownBy;
 
 /** Base class for tests of {@link TypeStrategies}. */
-@RunWith(Parameterized.class)
+@TestInstance(TestInstance.Lifecycle.PER_CLASS)
 public abstract class TypeStrategiesTestBase {
 
-    @Parameter public TestSpec testSpec;
-
-    @Test
-    public void testTypeStrategy() {
+    @ParameterizedTest(name = "{index}: {0}")
+    @MethodSource("testData")
+    void testTypeStrategy(TestSpec testSpec) {
         if (testSpec.expectedErrorMessage != null) {
-            assertThatThrownBy(this::runTypeInference)
+            assertThatThrownBy(() -> runTypeInference(testSpec))
                     .satisfies(
                             anyCauseMatches(
                                     ValidationException.class, testSpec.expectedErrorMessage));
         } else if (testSpec.expectedDataType != null) {
-            assertThat(runTypeInference().getOutputDataType()).isEqualTo(testSpec.expectedDataType);
+            assertThat(runTypeInference(testSpec).getOutputDataType())
+                    .isEqualTo(testSpec.expectedDataType);
         }
     }
 
+    protected abstract Stream<TestSpec> testData();
+
     // --------------------------------------------------------------------------------------------
 
-    private TypeInferenceUtil.Result runTypeInference() {
+    private TypeInferenceUtil.Result runTypeInference(TestSpec testSpec) {
         final FunctionDefinitionMock functionDefinitionMock = new FunctionDefinitionMock();
         functionDefinitionMock.functionKind = FunctionKind.SCALAR;
         final CallContextMock callContextMock = new CallContextMock();
diff --git a/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/inference/TypeTransformationsTest.java b/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/inference/TypeTransformationsTest.java
index 47d9bc1a4aa..dbbd0e06719 100644
--- a/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/inference/TypeTransformationsTest.java
+++ b/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/inference/TypeTransformationsTest.java
@@ -30,7 +30,7 @@ import org.apache.flink.table.types.logical.TypeInformationRawType;
 import org.apache.flink.table.types.utils.DataTypeUtils;
 import org.apache.flink.table.types.utils.TypeConversions;
 
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
 import java.sql.Date;
 import java.sql.Time;
@@ -44,10 +44,10 @@ import static org.apache.flink.table.types.inference.TypeTransformations.toNulla
 import static org.assertj.core.api.Assertions.assertThat;
 
 /** Tests for built-in {@link TypeTransformations}. */
-public class TypeTransformationsTest {
+class TypeTransformationsTest {
 
     @Test
-    public void testToInternal() {
+    void testToInternal() {
         DataType dataType =
                 DataTypes.STRUCTURED(
                         SimplePojo.class,
@@ -68,7 +68,7 @@ public class TypeTransformationsTest {
     }
 
     @Test
-    public void testTimeToSqlTypes() {
+    void testTimeToSqlTypes() {
         DataType dataType =
                 DataTypes.ROW(
                         DataTypes.FIELD("a", DataTypes.STRING()),
@@ -99,7 +99,7 @@ public class TypeTransformationsTest {
     }
 
     @Test
-    public void testLegacyRawToTypeInfoRaw() {
+    void testLegacyRawToTypeInfoRaw() {
         DataType dataType =
                 DataTypes.ROW(
                         DataTypes.FIELD("a", DataTypes.STRING()),
@@ -121,7 +121,7 @@ public class TypeTransformationsTest {
     }
 
     @Test
-    public void testToNullable() {
+    void testToNullable() {
         DataType dataType =
                 DataTypes.ROW(
                         DataTypes.FIELD("a", DataTypes.STRING().notNull()),
diff --git a/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/inference/strategies/ArrayTypeStrategyTest.java b/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/inference/strategies/ArrayTypeStrategyTest.java
index 31ac3e7f717..4cd08c22f67 100644
--- a/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/inference/strategies/ArrayTypeStrategyTest.java
+++ b/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/inference/strategies/ArrayTypeStrategyTest.java
@@ -21,17 +21,14 @@ package org.apache.flink.table.types.inference.strategies;
 import org.apache.flink.table.api.DataTypes;
 import org.apache.flink.table.types.inference.TypeStrategiesTestBase;
 
-import org.junit.runners.Parameterized;
-
-import java.util.Arrays;
-import java.util.List;
+import java.util.stream.Stream;
 
 /** Tests for {@link ArrayTypeStrategy}. */
-public class ArrayTypeStrategyTest extends TypeStrategiesTestBase {
+class ArrayTypeStrategyTest extends TypeStrategiesTestBase {
 
-    @Parameterized.Parameters(name = "{index}: {0}")
-    public static List<TestSpec> testData() {
-        return Arrays.asList(
+    @Override
+    protected Stream<TestSpec> testData() {
+        return Stream.of(
                 TestSpec.forStrategy("Infer an array type", SpecificTypeStrategies.ARRAY)
                         .inputTypes(DataTypes.BIGINT(), DataTypes.BIGINT())
                         .expectDataType(DataTypes.ARRAY(DataTypes.BIGINT()).notNull()));
diff --git a/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/inference/strategies/CurrentWatermarkInputTypeStrategyTest.java b/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/inference/strategies/CurrentWatermarkInputTypeStrategyTest.java
index 773499850ff..efd0bc39f25 100644
--- a/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/inference/strategies/CurrentWatermarkInputTypeStrategyTest.java
+++ b/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/inference/strategies/CurrentWatermarkInputTypeStrategyTest.java
@@ -26,18 +26,14 @@ import org.apache.flink.table.types.logical.TimestampKind;
 import org.apache.flink.table.types.logical.TimestampType;
 import org.apache.flink.table.types.utils.TypeConversions;
 
-import org.junit.runners.Parameterized;
-
-import java.util.List;
-
-import static java.util.Arrays.asList;
+import java.util.stream.Stream;
 
 /** Tests for {@link CurrentWatermarkInputTypeStrategy}. */
-public class CurrentWatermarkInputTypeStrategyTest extends InputTypeStrategiesTestBase {
+class CurrentWatermarkInputTypeStrategyTest extends InputTypeStrategiesTestBase {
 
-    @Parameterized.Parameters(name = "{index}: {0}")
-    public static List<TestSpec> testData() {
-        return asList(
+    @Override
+    protected Stream<TestSpec> testData() {
+        return Stream.of(
                 TestSpec.forStrategy(
                                 "TIMESTAMP(3) *ROWTIME* works",
                                 SpecificInputTypeStrategies.CURRENT_WATERMARK)
diff --git a/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/inference/strategies/CurrentWatermarkTypeStrategyTest.java b/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/inference/strategies/CurrentWatermarkTypeStrategyTest.java
index d56e5887263..4dbf5a393b6 100644
--- a/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/inference/strategies/CurrentWatermarkTypeStrategyTest.java
+++ b/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/inference/strategies/CurrentWatermarkTypeStrategyTest.java
@@ -26,17 +26,14 @@ import org.apache.flink.table.types.logical.TimestampKind;
 import org.apache.flink.table.types.logical.TimestampType;
 import org.apache.flink.table.types.utils.TypeConversions;
 
-import org.junit.runners.Parameterized;
-
-import java.util.Arrays;
-import java.util.List;
+import java.util.stream.Stream;
 
 /** Tests for {@link CurrentWatermarkTypeStrategy}. */
-public class CurrentWatermarkTypeStrategyTest extends TypeStrategiesTestBase {
+class CurrentWatermarkTypeStrategyTest extends TypeStrategiesTestBase {
 
-    @Parameterized.Parameters(name = "{index}: {0}")
-    public static List<TestSpec> testData() {
-        return Arrays.asList(
+    @Override
+    protected Stream<TestSpec> testData() {
+        return Stream.of(
                 // CURRENT_WATERMARK
                 TestSpec.forStrategy(
                                 "TIMESTAMP(3) *ROWTIME*", SpecificTypeStrategies.CURRENT_WATERMARK)
diff --git a/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/inference/strategies/DecimalTypeStrategyTest.java b/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/inference/strategies/DecimalTypeStrategyTest.java
index 0186154bb4d..33c37c3e9cd 100644
--- a/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/inference/strategies/DecimalTypeStrategyTest.java
+++ b/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/inference/strategies/DecimalTypeStrategyTest.java
@@ -22,17 +22,14 @@ import org.apache.flink.table.api.DataTypes;
 import org.apache.flink.table.types.inference.TypeStrategiesTestBase;
 import org.apache.flink.table.types.inference.TypeStrategy;
 
-import org.junit.runners.Parameterized;
-
-import java.util.Arrays;
-import java.util.List;
+import java.util.stream.Stream;
 
 /** Tests for decimal {@link TypeStrategy TypeStrategies}. */
-public class DecimalTypeStrategyTest extends TypeStrategiesTestBase {
+class DecimalTypeStrategyTest extends TypeStrategiesTestBase {
 
-    @Parameterized.Parameters(name = "{index}: {0}")
-    public static List<TestSpec> testData() {
-        return Arrays.asList(
+    @Override
+    protected Stream<TestSpec> testData() {
+        return Stream.of(
                 TestSpec.forStrategy("Find a decimal sum", SpecificTypeStrategies.DECIMAL_PLUS)
                         .inputTypes(DataTypes.DECIMAL(5, 4), DataTypes.DECIMAL(3, 2))
                         .expectDataType(DataTypes.DECIMAL(6, 4).notNull()),
diff --git a/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/inference/strategies/GetTypeStrategyTest.java b/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/inference/strategies/GetTypeStrategyTest.java
index d52b4f52623..49cfd504f4e 100644
--- a/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/inference/strategies/GetTypeStrategyTest.java
+++ b/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/inference/strategies/GetTypeStrategyTest.java
@@ -25,18 +25,15 @@ import org.apache.flink.table.types.inference.TypeStrategiesTestBase;
 import org.apache.flink.table.types.logical.BigIntType;
 import org.apache.flink.table.types.logical.StructuredType;
 
-import org.junit.runners.Parameterized;
-
-import java.util.Arrays;
 import java.util.Collections;
-import java.util.List;
+import java.util.stream.Stream;
 
 /** Tests for {@link GetTypeStrategy}. */
-public class GetTypeStrategyTest extends TypeStrategiesTestBase {
+class GetTypeStrategyTest extends TypeStrategiesTestBase {
 
-    @Parameterized.Parameters(name = "{index}: {0}")
-    public static List<TestSpec> testData() {
-        return Arrays.asList(
+    @Override
+    protected Stream<TestSpec> testData() {
+        return Stream.of(
                 TestSpec.forStrategy(
                                 "Access field of a row nullable type by name",
                                 SpecificTypeStrategies.GET)
diff --git a/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/inference/strategies/MapTypeStrategyTest.java b/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/inference/strategies/MapTypeStrategyTest.java
index 722033ad834..40cdcd70072 100644
--- a/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/inference/strategies/MapTypeStrategyTest.java
+++ b/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/inference/strategies/MapTypeStrategyTest.java
@@ -21,17 +21,14 @@ package org.apache.flink.table.types.inference.strategies;
 import org.apache.flink.table.api.DataTypes;
 import org.apache.flink.table.types.inference.TypeStrategiesTestBase;
 
-import org.junit.runners.Parameterized;
-
-import java.util.Arrays;
-import java.util.List;
+import java.util.stream.Stream;
 
 /** Tests for {@link MapTypeStrategy}. */
-public class MapTypeStrategyTest extends TypeStrategiesTestBase {
+class MapTypeStrategyTest extends TypeStrategiesTestBase {
 
-    @Parameterized.Parameters(name = "{index}: {0}")
-    public static List<TestSpec> testData() {
-        return Arrays.asList(
+    @Override
+    protected Stream<TestSpec> testData() {
+        return Stream.of(
                 TestSpec.forStrategy("Infer a map type", SpecificTypeStrategies.MAP)
                         .inputTypes(DataTypes.BIGINT(), DataTypes.STRING().notNull())
                         .expectDataType(
diff --git a/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/inference/strategies/RepeatingSequenceInputTypeStrategyTest.java b/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/inference/strategies/RepeatingSequenceInputTypeStrategyTest.java
index 9c09b798e07..b2df89209c0 100644
--- a/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/inference/strategies/RepeatingSequenceInputTypeStrategyTest.java
+++ b/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/inference/strategies/RepeatingSequenceInputTypeStrategyTest.java
@@ -20,22 +20,19 @@ package org.apache.flink.table.types.inference.strategies;
 
 import org.apache.flink.table.types.inference.InputTypeStrategiesTestBase;
 
-import org.junit.runners.Parameterized;
+import java.util.stream.Stream;
 
-import java.util.List;
-
-import static java.util.Arrays.asList;
 import static org.apache.flink.table.api.DataTypes.INT;
 import static org.apache.flink.table.api.DataTypes.STRING;
 import static org.apache.flink.table.types.inference.InputTypeStrategies.explicit;
 import static org.apache.flink.table.types.inference.InputTypeStrategies.repeatingSequence;
 
 /** Tests for {@link RepeatingSequenceInputTypeStrategy}. */
-public class RepeatingSequenceInputTypeStrategyTest extends InputTypeStrategiesTestBase {
+class RepeatingSequenceInputTypeStrategyTest extends InputTypeStrategiesTestBase {
 
-    @Parameterized.Parameters(name = "{index}: {0}")
-    public static List<TestSpec> testData() {
-        return asList(
+    @Override
+    protected Stream<TestSpec> testData() {
+        return Stream.of(
                 TestSpec.forStrategy(
                                 "Single occurrence",
                                 repeatingSequence(explicit(INT()), explicit(STRING())))
diff --git a/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/inference/strategies/RowTypeStrategyTest.java b/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/inference/strategies/RowTypeStrategyTest.java
index 13bcb4ab304..3c3429e65d0 100644
--- a/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/inference/strategies/RowTypeStrategyTest.java
+++ b/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/inference/strategies/RowTypeStrategyTest.java
@@ -21,17 +21,14 @@ package org.apache.flink.table.types.inference.strategies;
 import org.apache.flink.table.api.DataTypes;
 import org.apache.flink.table.types.inference.TypeStrategiesTestBase;
 
-import org.junit.runners.Parameterized;
-
-import java.util.Arrays;
-import java.util.List;
+import java.util.stream.Stream;
 
 /** Tests for {@link RowTypeStrategy}. */
-public class RowTypeStrategyTest extends TypeStrategiesTestBase {
+class RowTypeStrategyTest extends TypeStrategiesTestBase {
 
-    @Parameterized.Parameters(name = "{index}: {0}")
-    public static List<TestSpec> testData() {
-        return Arrays.asList(
+    @Override
+    protected Stream<TestSpec> testData() {
+        return Stream.of(
                 TestSpec.forStrategy("Infer a row type", SpecificTypeStrategies.ROW)
                         .inputTypes(DataTypes.BIGINT(), DataTypes.STRING())
                         .expectDataType(
diff --git a/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/inference/strategies/StringConcatTypeStrategyTest.java b/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/inference/strategies/StringConcatTypeStrategyTest.java
index 142817953f5..e362bf074e0 100644
--- a/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/inference/strategies/StringConcatTypeStrategyTest.java
+++ b/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/inference/strategies/StringConcatTypeStrategyTest.java
@@ -21,17 +21,14 @@ package org.apache.flink.table.types.inference.strategies;
 import org.apache.flink.table.api.DataTypes;
 import org.apache.flink.table.types.inference.TypeStrategiesTestBase;
 
-import org.junit.runners.Parameterized;
-
-import java.util.Arrays;
-import java.util.List;
+import java.util.stream.Stream;
 
 /** Tests for {@link StringConcatTypeStrategy}. */
-public class StringConcatTypeStrategyTest extends TypeStrategiesTestBase {
+class StringConcatTypeStrategyTest extends TypeStrategiesTestBase {
 
-    @Parameterized.Parameters(name = "{index}: {0}")
-    public static List<TestSpec> testData() {
-        return Arrays.asList(
+    @Override
+    protected Stream<TestSpec> testData() {
+        return Stream.of(
                 TestSpec.forStrategy("Concat two strings", SpecificTypeStrategies.STRING_CONCAT)
                         .inputTypes(DataTypes.CHAR(12).notNull(), DataTypes.VARCHAR(12))
                         .expectDataType(DataTypes.VARCHAR(24)));
diff --git a/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/inference/strategies/SymbolArgumentTypeStrategyTest.java b/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/inference/strategies/SymbolArgumentTypeStrategyTest.java
index 4de5e9d055a..dd51b5fdf4d 100644
--- a/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/inference/strategies/SymbolArgumentTypeStrategyTest.java
+++ b/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/inference/strategies/SymbolArgumentTypeStrategyTest.java
@@ -26,24 +26,21 @@ import org.apache.flink.table.types.inference.InputTypeStrategiesTestBase;
 import org.apache.flink.table.types.inference.InputTypeStrategy;
 import org.apache.flink.table.types.logical.SymbolType;
 
-import org.junit.runners.Parameterized;
+import java.util.stream.Stream;
 
-import java.util.List;
-
-import static java.util.Arrays.asList;
 import static org.apache.flink.table.types.inference.InputTypeStrategies.sequence;
 import static org.apache.flink.table.types.inference.InputTypeStrategies.symbol;
 
 /** Tests for {@link SymbolArgumentTypeStrategy}. */
-public class SymbolArgumentTypeStrategyTest extends InputTypeStrategiesTestBase {
+class SymbolArgumentTypeStrategyTest extends InputTypeStrategiesTestBase {
 
     private static final DataType SYMBOL_TYPE = new AtomicDataType(new SymbolType<>());
 
     private static final InputTypeStrategy STRATEGY = sequence(symbol(TestEnum.class));
 
-    @Parameterized.Parameters(name = "{index}: {0}")
-    public static List<TestSpec> testData() {
-        return asList(
+    @Override
+    protected Stream<TestSpec> testData() {
+        return Stream.of(
                 TestSpec.forStrategy("Valid argument", STRATEGY)
                         .calledWithArgumentTypes(SYMBOL_TYPE)
                         .calledWithLiteralAt(0, TestEnum.A)
diff --git a/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/inference/strategies/TypeLiteralArgumentTypeStrategyTest.java b/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/inference/strategies/TypeLiteralArgumentTypeStrategyTest.java
index 560a2c44fd8..7e4d5f3f116 100644
--- a/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/inference/strategies/TypeLiteralArgumentTypeStrategyTest.java
+++ b/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/inference/strategies/TypeLiteralArgumentTypeStrategyTest.java
@@ -21,20 +21,17 @@ package org.apache.flink.table.types.inference.strategies;
 import org.apache.flink.table.api.DataTypes;
 import org.apache.flink.table.types.inference.InputTypeStrategiesTestBase;
 
-import org.junit.runners.Parameterized;
+import java.util.stream.Stream;
 
-import java.util.List;
-
-import static java.util.Arrays.asList;
 import static org.apache.flink.table.types.inference.InputTypeStrategies.TYPE_LITERAL;
 import static org.apache.flink.table.types.inference.InputTypeStrategies.sequence;
 
 /** Tests for {@link TypeLiteralArgumentTypeStrategy}. */
-public class TypeLiteralArgumentTypeStrategyTest extends InputTypeStrategiesTestBase {
+class TypeLiteralArgumentTypeStrategyTest extends InputTypeStrategiesTestBase {
 
-    @Parameterized.Parameters(name = "{index}: {0}")
-    public static List<TestSpec> testData() {
-        return asList(
+    @Override
+    protected Stream<TestSpec> testData() {
+        return Stream.of(
                 TestSpec.forStrategy("Type literal", sequence(TYPE_LITERAL))
                         .calledWithArgumentTypes(DataTypes.STRING())
                         .calledWithLiteralAt(0, DataTypes.STRING())
diff --git a/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/logical/utils/LogicalTypeChecksTest.java b/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/logical/utils/LogicalTypeChecksTest.java
index 5b18afb104b..d0ede0f0fd9 100644
--- a/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/logical/utils/LogicalTypeChecksTest.java
+++ b/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/logical/utils/LogicalTypeChecksTest.java
@@ -29,7 +29,7 @@ import org.apache.flink.table.types.logical.LogicalTypeRoot;
 import org.apache.flink.table.types.logical.StructuredType;
 import org.apache.flink.table.types.utils.TypeConversions;
 
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
 import java.util.Arrays;
 import java.util.List;
@@ -41,10 +41,10 @@ import static org.apache.flink.table.api.DataTypes.STRING;
 import static org.assertj.core.api.Assertions.assertThat;
 
 /** Tests for {@link LogicalTypeChecks}. */
-public class LogicalTypeChecksTest {
+class LogicalTypeChecksTest {
 
     @Test
-    public void testHasNested() {
+    void testHasNested() {
         final DataType dataType = ROW(FIELD("f0", INT()), FIELD("f1", STRING()));
         assertThat(
                         LogicalTypeChecks.hasNested(
@@ -63,14 +63,14 @@ public class LogicalTypeChecksTest {
     }
 
     @Test
-    public void testIsCompositeTypeRowType() {
+    void testIsCompositeTypeRowType() {
         DataType dataType = ROW(FIELD("f0", INT()), FIELD("f1", STRING()));
 
         assertThat(LogicalTypeChecks.isCompositeType(dataType.getLogicalType())).isTrue();
     }
 
     @Test
-    public void testIsCompositeTypeDistinctType() {
+    void testIsCompositeTypeDistinctType() {
         DataType dataType = ROW(FIELD("f0", INT()), FIELD("f1", STRING()));
         DistinctType distinctType =
                 DistinctType.newBuilder(
@@ -82,7 +82,7 @@ public class LogicalTypeChecksTest {
     }
 
     @Test
-    public void testIsCompositeTypeLegacyCompositeType() {
+    void testIsCompositeTypeLegacyCompositeType() {
         DataType dataType =
                 TypeConversions.fromLegacyInfoToDataType(new RowTypeInfo(Types.STRING, Types.INT));
 
@@ -90,7 +90,7 @@ public class LogicalTypeChecksTest {
     }
 
     @Test
-    public void testIsCompositeTypeStructuredType() {
+    void testIsCompositeTypeStructuredType() {
         StructuredType logicalType =
                 StructuredType.newBuilder(ObjectIdentifier.of("catalog", "database", "type"))
                         .attributes(
@@ -108,28 +108,28 @@ public class LogicalTypeChecksTest {
     }
 
     @Test
-    public void testIsCompositeTypeLegacySimpleType() {
+    void testIsCompositeTypeLegacySimpleType() {
         DataType dataType = TypeConversions.fromLegacyInfoToDataType(Types.STRING);
 
         assertThat(LogicalTypeChecks.isCompositeType(dataType.getLogicalType())).isFalse();
     }
 
     @Test
-    public void testIsCompositeTypeSimpleType() {
+    void testIsCompositeTypeSimpleType() {
         DataType dataType = DataTypes.TIMESTAMP();
 
         assertThat(LogicalTypeChecks.isCompositeType(dataType.getLogicalType())).isFalse();
     }
 
     @Test
-    public void testFieldNameExtraction() {
+    void testFieldNameExtraction() {
         DataType dataType = ROW(FIELD("f0", INT()), FIELD("f1", STRING()));
         assertThat(LogicalTypeChecks.getFieldNames(dataType.getLogicalType()))
                 .containsExactly("f0", "f1");
     }
 
     @Test
-    public void testFieldCountExtraction() {
+    void testFieldCountExtraction() {
         DataType dataType = ROW(FIELD("f0", INT()), FIELD("f1", STRING()));
         assertThat(LogicalTypeChecks.getFieldCount(dataType.getLogicalType())).isEqualTo(2);
     }
diff --git a/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/logical/utils/LogicalTypeMergingTest.java b/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/logical/utils/LogicalTypeMergingTest.java
index fc9c6f33e9d..38d2d3a6e7b 100644
--- a/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/logical/utils/LogicalTypeMergingTest.java
+++ b/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/logical/utils/LogicalTypeMergingTest.java
@@ -21,7 +21,7 @@ package org.apache.flink.table.types.logical.utils;
 import org.apache.flink.table.types.logical.DecimalType;
 import org.apache.flink.table.types.logical.LogicalType;
 
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
 import java.util.List;
 
@@ -35,10 +35,10 @@ import static org.apache.flink.table.test.TableAssertions.assertThat;
  * <p>For {@link LogicalTypeMerging#findCommonType(List)} tests please check {@link
  * org.apache.flink.table.types.LogicalCommonTypeTest}
  */
-public class LogicalTypeMergingTest {
+class LogicalTypeMergingTest {
 
     @Test
-    public void testFindDivisionDecimalType() {
+    void testFindDivisionDecimalType() {
         assertThat(LogicalTypeMerging.findDivisionDecimalType(32, 8, 38, 8))
                 .hasPrecisionAndScale(38, 6);
         assertThat(LogicalTypeMerging.findDivisionDecimalType(30, 20, 30, 20))
@@ -46,7 +46,7 @@ public class LogicalTypeMergingTest {
     }
 
     @Test
-    public void testFindMultiplicationDecimalType() {
+    void testFindMultiplicationDecimalType() {
         assertThat(LogicalTypeMerging.findMultiplicationDecimalType(30, 10, 30, 10))
                 .hasPrecisionAndScale(38, 6);
         assertThat(LogicalTypeMerging.findMultiplicationDecimalType(30, 20, 30, 20))
@@ -56,7 +56,7 @@ public class LogicalTypeMergingTest {
     }
 
     @Test
-    public void testFindModuloDecimalType() {
+    void testFindModuloDecimalType() {
         assertThat(LogicalTypeMerging.findModuloDecimalType(30, 10, 30, 10))
                 .hasPrecisionAndScale(30, 10);
         assertThat(LogicalTypeMerging.findModuloDecimalType(30, 20, 25, 20))
@@ -66,7 +66,7 @@ public class LogicalTypeMergingTest {
     }
 
     @Test
-    public void testFindAdditionDecimalType() {
+    void testFindAdditionDecimalType() {
         assertThat(LogicalTypeMerging.findAdditionDecimalType(38, 8, 32, 8))
                 .hasPrecisionAndScale(38, 7);
         assertThat(LogicalTypeMerging.findAdditionDecimalType(32, 8, 38, 8))
@@ -80,7 +80,7 @@ public class LogicalTypeMergingTest {
     }
 
     @Test
-    public void testFindRoundingDecimalType() {
+    void testFindRoundingDecimalType() {
         assertThat(LogicalTypeMerging.findRoundDecimalType(32, 8, 5)).hasPrecisionAndScale(30, 5);
         assertThat(LogicalTypeMerging.findRoundDecimalType(32, 8, 10)).hasPrecisionAndScale(32, 8);
         assertThat(LogicalTypeMerging.findRoundDecimalType(30, 20, 18))
@@ -89,7 +89,7 @@ public class LogicalTypeMergingTest {
     }
 
     @Test
-    public void testFindAvgAggType() {
+    void testFindAvgAggType() {
         assertThat(LogicalTypeMerging.findAvgAggType(decimal(38, 20)))
                 .isDecimalType()
                 .hasPrecisionAndScale(38, 20);
diff --git a/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/utils/DataTypeUtilsTest.java b/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/utils/DataTypeUtilsTest.java
index 4912160f975..430111543bc 100644
--- a/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/utils/DataTypeUtilsTest.java
+++ b/flink-table/flink-table-common/src/test/java/org/apache/flink/table/types/utils/DataTypeUtilsTest.java
@@ -33,7 +33,7 @@ import org.apache.flink.table.types.logical.DistinctType;
 import org.apache.flink.table.types.logical.LogicalType;
 import org.apache.flink.table.types.logical.StructuredType;
 
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
 import java.sql.Timestamp;
 import java.time.LocalDateTime;
@@ -55,10 +55,10 @@ import static org.assertj.core.api.Assertions.assertThat;
 import static org.assertj.core.api.Assertions.assertThatThrownBy;
 
 /** Tests for {@link DataTypeUtils}. */
-public class DataTypeUtilsTest {
+class DataTypeUtilsTest {
 
     @Test
-    public void testAppendRowFields() {
+    void testAppendRowFields() {
         assertThat(
                         DataTypeUtils.appendRowFields(
                                 ROW(
@@ -81,7 +81,7 @@ public class DataTypeUtilsTest {
     }
 
     @Test
-    public void testIsInternalClass() {
+    void testIsInternalClass() {
         assertThat(DataTypes.INT()).is(DataTypeConditions.INTERNAL);
         assertThat(DataTypes.INT().notNull().bridgedTo(int.class)).is(DataTypeConditions.INTERNAL);
         assertThat(DataTypes.ROW().bridgedTo(RowData.class)).is(DataTypeConditions.INTERNAL);
@@ -89,7 +89,7 @@ public class DataTypeUtilsTest {
     }
 
     @Test
-    public void testFlattenToDataTypes() {
+    void testFlattenToDataTypes() {
         assertThat(DataTypeUtils.flattenToDataTypes(INT())).containsOnly(INT());
 
         assertThat(DataTypeUtils.flattenToDataTypes(ROW(FIELD("a", INT()), FIELD("b", BOOLEAN()))))
@@ -97,7 +97,7 @@ public class DataTypeUtilsTest {
     }
 
     @Test
-    public void testFlattenToNames() {
+    void testFlattenToNames() {
         assertThat(DataTypeUtils.flattenToNames(INT(), Collections.emptyList())).containsOnly("f0");
 
         assertThat(DataTypeUtils.flattenToNames(INT(), Collections.singletonList("f0")))
@@ -111,7 +111,7 @@ public class DataTypeUtilsTest {
     }
 
     @Test
-    public void testExpandRowType() {
+    void testExpandRowType() {
         DataType dataType =
                 ROW(
                         FIELD("f0", INT()),
@@ -131,7 +131,7 @@ public class DataTypeUtilsTest {
     }
 
     @Test
-    public void testExpandLegacyCompositeType() {
+    void testExpandLegacyCompositeType() {
         DataType dataType =
                 TypeConversions.fromLegacyInfoToDataType(
                         new TupleTypeInfo<>(Types.STRING, Types.INT, Types.SQL_TIMESTAMP));
@@ -146,7 +146,7 @@ public class DataTypeUtilsTest {
     }
 
     @Test
-    public void testExpandStructuredType() {
+    void testExpandStructuredType() {
         StructuredType logicalType =
                 StructuredType.newBuilder(ObjectIdentifier.of("catalog", "database", "type"))
                         .attributes(
@@ -182,7 +182,7 @@ public class DataTypeUtilsTest {
     }
 
     @Test
-    public void testExpandDistinctType() {
+    void testExpandDistinctType() {
         FieldsDataType dataType =
                 (FieldsDataType)
                         ROW(
@@ -211,13 +211,14 @@ public class DataTypeUtilsTest {
                                         "f3", TIMESTAMP(3).bridgedTo(LocalDateTime.class))));
     }
 
-    @Test(expected = IllegalArgumentException.class)
-    public void testExpandThrowExceptionOnAtomicType() {
-        DataTypeUtils.expandCompositeTypeToSchema(DataTypes.TIMESTAMP());
+    @Test
+    void testExpandThrowExceptionOnAtomicType() {
+        assertThatThrownBy(() -> DataTypeUtils.expandCompositeTypeToSchema(DataTypes.TIMESTAMP()))
+                .isInstanceOf(IllegalArgumentException.class);
     }
 
     @Test
-    public void testDataTypeValidation() {
+    void testDataTypeValidation() {
         final DataType validDataType = DataTypes.MAP(DataTypes.INT(), DataTypes.STRING());
 
         DataTypeUtils.validateInputDataType(validDataType);
diff --git a/flink-table/flink-table-common/src/test/java/org/apache/flink/table/utils/EncodingUtilsTest.java b/flink-table/flink-table-common/src/test/java/org/apache/flink/table/utils/EncodingUtilsTest.java
index 732551c5117..c037d676d47 100644
--- a/flink-table/flink-table-common/src/test/java/org/apache/flink/table/utils/EncodingUtilsTest.java
+++ b/flink-table/flink-table-common/src/test/java/org/apache/flink/table/utils/EncodingUtilsTest.java
@@ -18,7 +18,7 @@
 
 package org.apache.flink.table.utils;
 
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
 import java.io.Serializable;
 import java.util.Objects;
@@ -26,17 +26,17 @@ import java.util.Objects;
 import static org.assertj.core.api.Assertions.assertThat;
 
 /** Tests for {@link org.apache.flink.table.utils.EncodingUtils}. */
-public class EncodingUtilsTest {
+class EncodingUtilsTest {
 
     @Test
-    public void testObjectStringEncoding() {
+    void testObjectStringEncoding() {
         final MyPojo pojo = new MyPojo(33, "Hello");
         final String base64 = EncodingUtils.encodeObjectToString(pojo);
         assertThat(EncodingUtils.decodeStringToObject(base64, Serializable.class)).isEqualTo(pojo);
     }
 
     @Test
-    public void testStringBase64Encoding() {
+    void testStringBase64Encoding() {
         final String string = "Hello, this is apache flink.";
         final String base64 = EncodingUtils.encodeStringToBase64(string);
         assertThat(base64).isEqualTo("SGVsbG8sIHRoaXMgaXMgYXBhY2hlIGZsaW5rLg==");
@@ -44,20 +44,20 @@ public class EncodingUtilsTest {
     }
 
     @Test
-    public void testMd5Hex() {
+    void testMd5Hex() {
         final String string = "Hello, world! How are you? 高精确";
         assertThat(EncodingUtils.hex(EncodingUtils.md5(string)))
                 .isEqualTo("983abac84e994b4ba73be177e5cc298b");
     }
 
     @Test
-    public void testJavaEscaping() {
+    void testJavaEscaping() {
         assertThat(EncodingUtils.escapeJava("\\hello\"world'space/"))
                 .isEqualTo("\\\\hello\\\"world'space/");
     }
 
     @Test
-    public void testRepetition() {
+    void testRepetition() {
         assertThat(EncodingUtils.repeat("we", 3)).isEqualTo("wewewe");
     }
 
diff --git a/flink-table/flink-table-common/src/test/java/org/apache/flink/table/utils/PartitionPathUtilsTest.java b/flink-table/flink-table-common/src/test/java/org/apache/flink/table/utils/PartitionPathUtilsTest.java
index 7d7b09b0e37..51ff60026bf 100644
--- a/flink-table/flink-table-common/src/test/java/org/apache/flink/table/utils/PartitionPathUtilsTest.java
+++ b/flink-table/flink-table-common/src/test/java/org/apache/flink/table/utils/PartitionPathUtilsTest.java
@@ -18,15 +18,15 @@
 
 package org.apache.flink.table.utils;
 
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
 import static org.assertj.core.api.Assertions.assertThat;
 
 /** Tests for {@link org.apache.flink.table.utils.PartitionPathUtils}. */
-public class PartitionPathUtilsTest {
+class PartitionPathUtilsTest {
 
     @Test
-    public void testEscapeChar() {
+    void testEscapeChar() {
         for (char c = 0; c <= 128; c++) {
             String expected = "%" + String.format("%1$02X", (int) c);
             String actual = PartitionPathUtils.escapeChar(c, new StringBuilder()).toString();
@@ -35,7 +35,7 @@ public class PartitionPathUtilsTest {
     }
 
     @Test
-    public void testEscapePathNameWithHeadControl() {
+    void testEscapePathNameWithHeadControl() {
         String origin = "[00";
         String expected = "%5B00";
         String actual = PartitionPathUtils.escapePathName(origin);
@@ -44,7 +44,7 @@ public class PartitionPathUtilsTest {
     }
 
     @Test
-    public void testEscapePathNameWithTailControl() {
+    void testEscapePathNameWithTailControl() {
         String origin = "00]";
         String expected = "00%5D";
         String actual = PartitionPathUtils.escapePathName(origin);
@@ -53,7 +53,7 @@ public class PartitionPathUtilsTest {
     }
 
     @Test
-    public void testEscapePathNameWithMidControl() {
+    void testEscapePathNameWithMidControl() {
         String origin = "00:00";
         String expected = "00%3A00";
         String actual = PartitionPathUtils.escapePathName(origin);
@@ -62,7 +62,7 @@ public class PartitionPathUtilsTest {
     }
 
     @Test
-    public void testEscapePathName() {
+    void testEscapePathName() {
         String origin = "[00:00]";
         String expected = "%5B00%3A00%5D";
         String actual = PartitionPathUtils.escapePathName(origin);
@@ -71,7 +71,7 @@ public class PartitionPathUtilsTest {
     }
 
     @Test
-    public void testEscapePathNameWithoutControl() {
+    void testEscapePathNameWithoutControl() {
         String origin = "0000";
         String expected = "0000";
         String actual = PartitionPathUtils.escapePathName(origin);
diff --git a/flink-table/flink-table-common/src/test/java/org/apache/flink/table/utils/TableSchemaUtilsTest.java b/flink-table/flink-table-common/src/test/java/org/apache/flink/table/utils/TableSchemaUtilsTest.java
index eb0f6f2140a..3fe5c42141b 100644
--- a/flink-table/flink-table-common/src/test/java/org/apache/flink/table/utils/TableSchemaUtilsTest.java
+++ b/flink-table/flink-table-common/src/test/java/org/apache/flink/table/utils/TableSchemaUtilsTest.java
@@ -22,16 +22,16 @@ import org.apache.flink.table.api.DataTypes;
 import org.apache.flink.table.api.TableSchema;
 import org.apache.flink.table.api.ValidationException;
 
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.assertj.core.api.Assertions.assertThatThrownBy;
 
 /** Tests for TableSchemaUtils. */
-public class TableSchemaUtilsTest {
+class TableSchemaUtilsTest {
 
     @Test
-    public void testBuilderWithGivenSchema() {
+    void testBuilderWithGivenSchema() {
         TableSchema oriSchema =
                 TableSchema.builder()
                         .field("a", DataTypes.INT().notNull())
@@ -46,7 +46,7 @@ public class TableSchemaUtilsTest {
     }
 
     @Test
-    public void testDropConstraint() {
+    void testDropConstraint() {
         TableSchema originalSchema =
                 TableSchema.builder()
                         .field("a", DataTypes.INT().notNull())
diff --git a/flink-table/flink-table-common/src/test/java/org/apache/flink/table/utils/TypeMappingUtilsTest.java b/flink-table/flink-table-common/src/test/java/org/apache/flink/table/utils/TypeMappingUtilsTest.java
index 1409310d60d..e6ac3e1bd25 100644
--- a/flink-table/flink-table-common/src/test/java/org/apache/flink/table/utils/TypeMappingUtilsTest.java
+++ b/flink-table/flink-table-common/src/test/java/org/apache/flink/table/utils/TypeMappingUtilsTest.java
@@ -37,7 +37,7 @@ import org.apache.flink.table.types.utils.DataTypeUtils;
 import org.apache.flink.table.types.utils.TypeConversions;
 import org.apache.flink.types.Row;
 
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
 import javax.annotation.Nullable;
 
@@ -56,10 +56,10 @@ import static org.assertj.core.api.Assertions.assertThat;
 import static org.assertj.core.api.Assertions.assertThatThrownBy;
 
 /** Tests for {@link TypeMappingUtils}. */
-public class TypeMappingUtilsTest {
+class TypeMappingUtilsTest {
 
     @Test
-    public void testFieldMappingReordered() {
+    void testFieldMappingReordered() {
         int[] indices =
                 TypeMappingUtils.computePhysicalIndices(
                         TableSchema.builder()
@@ -74,7 +74,7 @@ public class TypeMappingUtilsTest {
     }
 
     @Test
-    public void testFieldMappingNonMatchingTypes() {
+    void testFieldMappingNonMatchingTypes() {
         assertThatThrownBy(
                         () ->
                                 TypeMappingUtils.computePhysicalIndices(
@@ -94,7 +94,7 @@ public class TypeMappingUtilsTest {
     }
 
     @Test
-    public void testFieldMappingNonMatchingPrecision() {
+    void testFieldMappingNonMatchingPrecision() {
         assertThatThrownBy(
                         () ->
                                 TypeMappingUtils.computePhysicalIndices(
@@ -112,7 +112,7 @@ public class TypeMappingUtilsTest {
     }
 
     @Test
-    public void testNameMappingDoesNotExist() {
+    void testNameMappingDoesNotExist() {
         assertThatThrownBy(
                         () ->
                                 TypeMappingUtils.computePhysicalIndices(
@@ -127,7 +127,7 @@ public class TypeMappingUtilsTest {
     }
 
     @Test
-    public void testFieldMappingLegacyDecimalType() {
+    void testFieldMappingLegacyDecimalType() {
         int[] indices =
                 TypeMappingUtils.computePhysicalIndices(
                         TableSchema.builder()
@@ -141,7 +141,7 @@ public class TypeMappingUtilsTest {
     }
 
     @Test
-    public void testFieldMappingLegacyDecimalTypeNotMatchingPrecision() {
+    void testFieldMappingLegacyDecimalTypeNotMatchingPrecision() {
         assertThatThrownBy(
                         () ->
                                 TypeMappingUtils.computePhysicalIndices(
@@ -166,7 +166,7 @@ public class TypeMappingUtilsTest {
     }
 
     @Test
-    public void testFieldMappingRowTypeNotMatchingNamesInNestedType() {
+    void testFieldMappingRowTypeNotMatchingNamesInNestedType() {
         int[] indices =
                 TypeMappingUtils.computePhysicalIndices(
                         TableSchema.builder()
@@ -191,7 +191,7 @@ public class TypeMappingUtilsTest {
     }
 
     @Test
-    public void testFieldMappingRowTypeNotMatchingTypesInNestedType() {
+    void testFieldMappingRowTypeNotMatchingTypesInNestedType() {
         assertThatThrownBy(
                         () ->
                                 TypeMappingUtils.computePhysicalIndices(
@@ -220,7 +220,7 @@ public class TypeMappingUtilsTest {
     }
 
     @Test
-    public void testFieldMappingLegacyCompositeType() {
+    void testFieldMappingLegacyCompositeType() {
         int[] indices =
                 TypeMappingUtils.computePhysicalIndices(
                         TableSchema.builder()
@@ -236,7 +236,7 @@ public class TypeMappingUtilsTest {
     }
 
     @Test
-    public void testFieldMappingLegacyCompositeTypeWithRenaming() {
+    void testFieldMappingLegacyCompositeTypeWithRenaming() {
         int[] indices =
                 TypeMappingUtils.computePhysicalIndices(
                         TableSchema.builder()
@@ -261,7 +261,7 @@ public class TypeMappingUtilsTest {
     }
 
     @Test
-    public void testMappingWithBatchTimeAttributes() {
+    void testMappingWithBatchTimeAttributes() {
         TestTableSource tableSource =
                 new TestTableSource(
                         DataTypes.BIGINT(), Collections.singletonList("rowtime"), "proctime");
@@ -281,7 +281,7 @@ public class TypeMappingUtilsTest {
     }
 
     @Test
-    public void testMappingWithStreamTimeAttributes() {
+    void testMappingWithStreamTimeAttributes() {
         TestTableSource tableSource =
                 new TestTableSource(
                         DataTypes.BIGINT(), Collections.singletonList("rowtime"), "proctime");
@@ -301,7 +301,7 @@ public class TypeMappingUtilsTest {
     }
 
     @Test
-    public void testMappingWithStreamTimeAttributesFromCompositeType() {
+    void testMappingWithStreamTimeAttributesFromCompositeType() {
         TestTableSource tableSource =
                 new TestTableSource(
                         ROW(FIELD("b", TIME()), FIELD("a", DataTypes.BIGINT())),
@@ -323,7 +323,7 @@ public class TypeMappingUtilsTest {
     }
 
     @Test
-    public void testWrongLogicalTypeForRowtimeAttribute() {
+    void testWrongLogicalTypeForRowtimeAttribute() {
         TestTableSource tableSource =
                 new TestTableSource(
                         DataTypes.BIGINT(), Collections.singletonList("rowtime"), "proctime");
@@ -347,7 +347,7 @@ public class TypeMappingUtilsTest {
     }
 
     @Test
-    public void testWrongLogicalTypeForProctimeAttribute() {
+    void testWrongLogicalTypeForProctimeAttribute() {
         TestTableSource tableSource =
                 new TestTableSource(
                         DataTypes.BIGINT(), Collections.singletonList("rowtime"), "proctime");
@@ -370,7 +370,7 @@ public class TypeMappingUtilsTest {
     }
 
     @Test
-    public void testCheckPhysicalLogicalTypeCompatible() {
+    void testCheckPhysicalLogicalTypeCompatible() {
         TableSchema tableSchema =
                 TableSchema.builder()
                         .field("a", DataTypes.VARCHAR(2))
diff --git a/flink-table/flink-table-common/src/test/java/org/apache/flink/table/utils/TypeStringUtilsTest.java b/flink-table/flink-table-common/src/test/java/org/apache/flink/table/utils/TypeStringUtilsTest.java
index 55dba1f6004..6e6b2afe971 100644
--- a/flink-table/flink-table-common/src/test/java/org/apache/flink/table/utils/TypeStringUtilsTest.java
+++ b/flink-table/flink-table-common/src/test/java/org/apache/flink/table/utils/TypeStringUtilsTest.java
@@ -24,15 +24,16 @@ import org.apache.flink.api.java.typeutils.MultisetTypeInfo;
 import org.apache.flink.api.java.typeutils.TypeExtractor;
 import org.apache.flink.table.api.ValidationException;
 
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
 import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
 
 /** Tests for {@link TypeStringUtils}. */
-public class TypeStringUtilsTest {
+class TypeStringUtilsTest {
 
     @Test
-    public void testPrimitiveTypes() {
+    void testPrimitiveTypes() {
         testReadAndWrite("VARCHAR", Types.STRING);
         testReadAndWrite("BOOLEAN", Types.BOOLEAN);
         testReadAndWrite("TINYINT", Types.BYTE);
@@ -66,7 +67,7 @@ public class TypeStringUtilsTest {
     }
 
     @Test
-    public void testWriteComplexTypes() {
+    void testWriteComplexTypes() {
         testReadAndWrite("ROW<f0 DECIMAL, f1 TINYINT>", Types.ROW(Types.BIG_DEC, Types.BYTE));
 
         testReadAndWrite(
@@ -137,19 +138,23 @@ public class TypeStringUtilsTest {
                         Types.LOCAL_DATE));
     }
 
-    @Test(expected = ValidationException.class)
-    public void testSyntaxError1() {
-        TypeStringUtils.readTypeInfo("ROW<<f0 DECIMAL, f1 TINYINT>"); // additional <
+    @Test
+    void testSyntaxError1() {
+        assertThatThrownBy(() -> TypeStringUtils.readTypeInfo("ROW<<f0 DECIMAL, f1 TINYINT>"))
+                .isInstanceOf(ValidationException.class); // additional <
     }
 
-    @Test(expected = ValidationException.class)
-    public void testSyntaxError2() {
-        TypeStringUtils.readTypeInfo("ROW<f0 DECIMAL DECIMAL, f1 TINYINT>"); // duplicate type
+    @Test
+    void testSyntaxError2() {
+        assertThatThrownBy(
+                        () -> TypeStringUtils.readTypeInfo("ROW<f0 DECIMAL DECIMAL, f1 TINYINT>"))
+                .isInstanceOf(ValidationException.class); // duplicate type
     }
 
-    @Test(expected = ValidationException.class)
-    public void testSyntaxError3() {
-        TypeStringUtils.readTypeInfo("ROW<f0 INVALID, f1 TINYINT>"); // invalid type
+    @Test
+    void testSyntaxError3() {
+        assertThatThrownBy(() -> TypeStringUtils.readTypeInfo("ROW<f0 INVALID, f1 TINYINT>"))
+                .isInstanceOf(ValidationException.class); // invalid type
     }
 
     private void testReadAndWrite(String expected, TypeInformation<?> type) {
diff --git a/flink-table/flink-table-common/src/test/java/org/apache/flink/table/utils/print/TableauStyleTest.java b/flink-table/flink-table-common/src/test/java/org/apache/flink/table/utils/print/TableauStyleTest.java
index dfe7b5d7e4c..8d6b8c78ac2 100644
--- a/flink-table/flink-table-common/src/test/java/org/apache/flink/table/utils/print/TableauStyleTest.java
+++ b/flink-table/flink-table-common/src/test/java/org/apache/flink/table/utils/print/TableauStyleTest.java
@@ -30,7 +30,7 @@ import org.apache.flink.table.utils.DateTimeUtils;
 import org.apache.flink.types.Row;
 import org.apache.flink.types.RowKind;
 
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
 import java.io.ByteArrayOutputStream;
 import java.io.PrintWriter;
@@ -45,11 +45,11 @@ import java.util.stream.Collectors;
 import static org.assertj.core.api.Assertions.assertThat;
 
 /** Tests for {@link TableauStyle}. */
-public class TableauStyleTest {
+class TableauStyleTest {
     private final ByteArrayOutputStream outContent = new ByteArrayOutputStream();
 
     @Test
-    public void testCharFullWidth() {
+    void testCharFullWidth() {
         char[] chars = new char[] {'A', 'a', ',', '中', ',', 'こ'};
         boolean[] expected = new boolean[] {false, false, false, true, true, true};
 
@@ -60,7 +60,7 @@ public class TableauStyleTest {
     }
 
     @Test
-    public void testStringDisplayWidth() {
+    void testStringDisplayWidth() {
         List<String> data =
                 Arrays.asList(
                         "abcdefg,12345,ABC",
@@ -75,7 +75,7 @@ public class TableauStyleTest {
     }
 
     @Test
-    public void testPrintWithEmptyResult() {
+    void testPrintWithEmptyResult() {
         PrintStyle.tableauWithDataInferredColumnWidths(getSchema(), getConverter())
                 .print(Collections.emptyIterator(), new PrintWriter(outContent));
 
@@ -83,7 +83,7 @@ public class TableauStyleTest {
     }
 
     @Test
-    public void testPrintWithEmptyResultAndRowKind() {
+    void testPrintWithEmptyResultAndRowKind() {
         PrintStyle.tableauWithTypeInferredColumnWidths(
                         getSchema(),
                         getConverter(),
@@ -96,7 +96,7 @@ public class TableauStyleTest {
     }
 
     @Test
-    public void testPrintWithEmptyResultAndDeriveColumnWidthByContent() {
+    void testPrintWithEmptyResultAndDeriveColumnWidthByContent() {
         PrintStyle.tableauWithTypeInferredColumnWidths(
                         getSchema(),
                         getConverter(),
@@ -109,7 +109,7 @@ public class TableauStyleTest {
     }
 
     @Test
-    public void testPrintWithMultipleRows() {
+    void testPrintWithMultipleRows() {
         PrintStyle.tableauWithDataInferredColumnWidths(getSchema(), getConverter())
                 .print(getData().iterator(), new PrintWriter(outContent));
 
@@ -152,7 +152,7 @@ public class TableauStyleTest {
     }
 
     @Test
-    public void testPrintWithMultipleRowsAndRowKind() {
+    void testPrintWithMultipleRowsAndRowKind() {
         PrintStyle.tableauWithTypeInferredColumnWidths(
                         getSchema(),
                         getConverter(),
@@ -200,7 +200,7 @@ public class TableauStyleTest {
     }
 
     @Test
-    public void testPrintWithMultipleRowsAndDeriveColumnWidthByContent() {
+    void testPrintWithMultipleRowsAndDeriveColumnWidthByContent() {
         PrintStyle.tableauWithDataInferredColumnWidths(
                         getSchema(),
                         getConverter(),
diff --git a/flink-table/flink-table-common/src/test/resources/META-INF/services/org.junit.jupiter.api.extension.Extension b/flink-table/flink-table-common/src/test/resources/META-INF/services/org.junit.jupiter.api.extension.Extension
new file mode 100644
index 00000000000..28999133c2b
--- /dev/null
+++ b/flink-table/flink-table-common/src/test/resources/META-INF/services/org.junit.jupiter.api.extension.Extension
@@ -0,0 +1,16 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+org.apache.flink.util.TestLoggerExtension
\ No newline at end of file