diff --git a/flink-connector-jdbc/src/test/java/org/apache/flink/connector/jdbc/databases/mysql/table/UnsignedTypeConversionITCase.java b/flink-connector-jdbc/src/test/java/org/apache/flink/connector/jdbc/databases/mysql/table/UnsignedTypeConversionITCase.java
index 6364cd7..531d631 100644
--- a/flink-connector-jdbc/src/test/java/org/apache/flink/connector/jdbc/databases/mysql/table/UnsignedTypeConversionITCase.java
+++ b/flink-connector-jdbc/src/test/java/org/apache/flink/connector/jdbc/databases/mysql/table/UnsignedTypeConversionITCase.java
@@ -32,8 +32,6 @@
 import org.apache.flink.util.CollectionUtil;
 
 import org.junit.jupiter.api.Test;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 import java.math.BigDecimal;
 import java.sql.Connection;
@@ -53,8 +51,6 @@
  */
 class UnsignedTypeConversionITCase extends AbstractTestBase implements MySqlTestBase {
 
-    private static final Logger LOGGER =
-            LoggerFactory.getLogger(UnsignedTypeConversionITCase.class);
     private static final String TABLE_SOURCE = "jdbc_source";
     private static final String TABLE_SINK = "jdbc_sink";
     private static final String TABLE_DATA = "data";
diff --git a/flink-connector-jdbc/src/test/java/org/apache/flink/connector/jdbc/databases/oracle/table/OracleTableSourceITCase.java b/flink-connector-jdbc/src/test/java/org/apache/flink/connector/jdbc/databases/oracle/table/OracleTableSourceITCase.java
index 77192bf..4634b6b 100644
--- a/flink-connector-jdbc/src/test/java/org/apache/flink/connector/jdbc/databases/oracle/table/OracleTableSourceITCase.java
+++ b/flink-connector-jdbc/src/test/java/org/apache/flink/connector/jdbc/databases/oracle/table/OracleTableSourceITCase.java
@@ -105,7 +105,7 @@
     }
 
     @Test
-    void testJdbcSource() throws Exception {
+    void testJdbcSource() {
         tEnv.executeSql(INPUT_TABLE.getCreateQueryForFlink(getMetadata(), INPUT_TABLE_NAME));
         Iterator<Row> collected = tEnv.executeSql("SELECT * FROM " + INPUT_TABLE_NAME).collect();
         List<String> result =
@@ -123,7 +123,7 @@
     }
 
     @Test
-    void testProject() throws Exception {
+    void testProject() {
         tEnv.executeSql(
                 INPUT_TABLE.getCreateQueryForFlink(
                         getMetadata(),
@@ -158,7 +158,7 @@
     }
 
     @Test
-    void testLimit() throws Exception {
+    void testLimit() {
         tEnv.executeSql(
                 INPUT_TABLE.getCreateQueryForFlink(
                         getMetadata(),
diff --git a/flink-connector-jdbc/src/test/java/org/apache/flink/connector/jdbc/databases/postgres/catalog/PostgresCatalogTestBase.java b/flink-connector-jdbc/src/test/java/org/apache/flink/connector/jdbc/databases/postgres/catalog/PostgresCatalogTestBase.java
index 6e6c2d5..c8d2b12 100644
--- a/flink-connector-jdbc/src/test/java/org/apache/flink/connector/jdbc/databases/postgres/catalog/PostgresCatalogTestBase.java
+++ b/flink-connector-jdbc/src/test/java/org/apache/flink/connector/jdbc/databases/postgres/catalog/PostgresCatalogTestBase.java
@@ -28,8 +28,6 @@
 
 import org.junit.jupiter.api.AfterAll;
 import org.junit.jupiter.api.BeforeAll;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 import java.sql.Connection;
 import java.sql.DriverManager;
@@ -39,8 +37,6 @@
 /** Test base for {@link PostgresCatalog}. */
 class PostgresCatalogTestBase implements JdbcITCaseBase, PostgresTestBase {
 
-    public static final Logger LOG = LoggerFactory.getLogger(PostgresCatalogTestBase.class);
-
     private static DatabaseMetadata getStaticMetadata() {
         return PostgresDatabase.getMetadata();
     }
diff --git a/flink-connector-jdbc/src/test/java/org/apache/flink/connector/jdbc/databases/postgres/catalog/factory/JdbcCatalogFactoryTest.java b/flink-connector-jdbc/src/test/java/org/apache/flink/connector/jdbc/databases/postgres/catalog/factory/JdbcCatalogFactoryTest.java
index 5c66bda..b4d8aac 100644
--- a/flink-connector-jdbc/src/test/java/org/apache/flink/connector/jdbc/databases/postgres/catalog/factory/JdbcCatalogFactoryTest.java
+++ b/flink-connector-jdbc/src/test/java/org/apache/flink/connector/jdbc/databases/postgres/catalog/factory/JdbcCatalogFactoryTest.java
@@ -29,10 +29,7 @@
 
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
-import java.sql.SQLException;
 import java.util.HashMap;
 import java.util.Map;
 
@@ -41,15 +38,13 @@
 /** Test for {@link JdbcCatalogFactory}. */
 class JdbcCatalogFactoryTest implements PostgresTestBase {
 
-    public static final Logger LOG = LoggerFactory.getLogger(JdbcCatalogFactoryTest.class);
-
     protected static String baseUrl;
     protected static JdbcCatalog catalog;
 
     protected static final String TEST_CATALOG_NAME = "mypg";
 
     @BeforeEach
-    void setup() throws SQLException {
+    void setup() {
         // jdbc:postgresql://localhost:50807/postgres?user=postgres
         String jdbcUrl = getMetadata().getJdbcUrl();
         // jdbc:postgresql://localhost:50807/
diff --git a/flink-connector-jdbc/src/test/java/org/apache/flink/connector/jdbc/databases/sqlserver/table/SqlServerTableSourceITCase.java b/flink-connector-jdbc/src/test/java/org/apache/flink/connector/jdbc/databases/sqlserver/table/SqlServerTableSourceITCase.java
index 02805be..e5dc9bf 100644
--- a/flink-connector-jdbc/src/test/java/org/apache/flink/connector/jdbc/databases/sqlserver/table/SqlServerTableSourceITCase.java
+++ b/flink-connector-jdbc/src/test/java/org/apache/flink/connector/jdbc/databases/sqlserver/table/SqlServerTableSourceITCase.java
@@ -107,7 +107,7 @@
     }
 
     @Test
-    void testJdbcSource() throws Exception {
+    void testJdbcSource() {
         createFlinkTable();
         Iterator<Row> collected = tEnv.executeSql("SELECT * FROM " + INPUT_TABLE_NAME).collect();
         List<String> result =
@@ -131,7 +131,7 @@
     }
 
     @Test
-    void testProject() throws Exception {
+    void testProject() {
         createFlinkTable();
         Iterator<Row> collected =
                 tEnv.executeSql("SELECT id,datetime_col,decimal_col FROM " + INPUT_TABLE_NAME)
@@ -151,7 +151,7 @@
     }
 
     @Test
-    void testFilter() throws Exception {
+    void testFilter() {
         createFlinkTable();
         Iterator<Row> collected =
                 tEnv.executeSql(
diff --git a/flink-connector-jdbc/src/test/java/org/apache/flink/connector/jdbc/internal/JdbcFullTest.java b/flink-connector-jdbc/src/test/java/org/apache/flink/connector/jdbc/internal/JdbcFullTest.java
index d41b685..c59f619 100644
--- a/flink-connector-jdbc/src/test/java/org/apache/flink/connector/jdbc/internal/JdbcFullTest.java
+++ b/flink-connector-jdbc/src/test/java/org/apache/flink/connector/jdbc/internal/JdbcFullTest.java
@@ -178,9 +178,6 @@
         try (Connection conn = getMetadata().getConnection();
                 Statement stat = conn.createStatement()) {
             stat.execute("DELETE FROM " + OUTPUT_TABLE);
-
-            stat.close();
-            conn.close();
         }
     }
 
diff --git a/flink-connector-jdbc/src/test/java/org/apache/flink/connector/jdbc/table/JdbcAppendOnlyWriterTest.java b/flink-connector-jdbc/src/test/java/org/apache/flink/connector/jdbc/table/JdbcAppendOnlyWriterTest.java
index 3bd08ea..27723e8 100644
--- a/flink-connector-jdbc/src/test/java/org/apache/flink/connector/jdbc/table/JdbcAppendOnlyWriterTest.java
+++ b/flink-connector-jdbc/src/test/java/org/apache/flink/connector/jdbc/table/JdbcAppendOnlyWriterTest.java
@@ -54,7 +54,7 @@
     }
 
     @Test
-    void testMaxRetry() throws Exception {
+    void testMaxRetry() {
         assertThatThrownBy(
                         () -> {
                             format =
diff --git a/flink-connector-jdbc/src/test/java/org/apache/flink/connector/jdbc/table/JdbcDynamicTableSourceITCase.java b/flink-connector-jdbc/src/test/java/org/apache/flink/connector/jdbc/table/JdbcDynamicTableSourceITCase.java
index 3b1855e..95a39d5 100644
--- a/flink-connector-jdbc/src/test/java/org/apache/flink/connector/jdbc/table/JdbcDynamicTableSourceITCase.java
+++ b/flink-connector-jdbc/src/test/java/org/apache/flink/connector/jdbc/table/JdbcDynamicTableSourceITCase.java
@@ -105,7 +105,7 @@
     }
 
     @BeforeEach
-    void beforeAll() throws SQLException {
+    void beforeEach() throws SQLException {
         try (Connection conn = getMetadata().getConnection()) {
             inputTable.insertIntoTableValues(conn, getTestData());
         }
@@ -153,7 +153,7 @@
     }
 
     @Test
-    public void testLimit() throws Exception {
+    public void testLimit() {
         String testTable = "testTable";
         tEnv.executeSql(
                 inputTable.getCreateQueryForFlink(
@@ -174,7 +174,7 @@
     }
 
     @Test
-    public void testFilter() throws Exception {
+    public void testFilter() {
         String testTable = "testTable";
         tEnv.executeSql(inputTable.getCreateQueryForFlink(getMetadata(), testTable));
 
@@ -271,7 +271,7 @@
 
     @ParameterizedTest
     @EnumSource(Caching.class)
-    void testLookupJoin(Caching caching) throws Exception {
+    void testLookupJoin(Caching caching) {
         // Create JDBC lookup table
         List<String> cachingOptions = Collections.emptyList();
         if (caching.equals(Caching.ENABLE_CACHE)) {
diff --git a/flink-connector-jdbc/src/test/java/org/apache/flink/connector/jdbc/table/JdbcOutputFormatTest.java b/flink-connector-jdbc/src/test/java/org/apache/flink/connector/jdbc/table/JdbcOutputFormatTest.java
index d7d95b6..6d0787e 100644
--- a/flink-connector-jdbc/src/test/java/org/apache/flink/connector/jdbc/table/JdbcOutputFormatTest.java
+++ b/flink-connector-jdbc/src/test/java/org/apache/flink/connector/jdbc/table/JdbcOutputFormatTest.java
@@ -76,7 +76,7 @@
     private static InternalTypeInfo<RowData> rowDataTypeInfo = InternalTypeInfo.of(rowType);
 
     @AfterEach
-    void tearDown() throws Exception {
+    void tearDown() {
         if (outputFormat != null) {
             outputFormat.close();
         }
diff --git a/flink-connector-jdbc/src/test/java/org/apache/flink/connector/jdbc/testutils/databases/sqlserver/SqlServerImages.java b/flink-connector-jdbc/src/test/java/org/apache/flink/connector/jdbc/testutils/databases/sqlserver/SqlServerImages.java
index 43263ba..dc2cf5c 100644
--- a/flink-connector-jdbc/src/test/java/org/apache/flink/connector/jdbc/testutils/databases/sqlserver/SqlServerImages.java
+++ b/flink-connector-jdbc/src/test/java/org/apache/flink/connector/jdbc/testutils/databases/sqlserver/SqlServerImages.java
@@ -24,7 +24,4 @@
     DockerImageName MSSQL_AZURE_SQL_EDGE =
             DockerImageName.parse("mcr.microsoft.com/azure-sql-edge")
                     .asCompatibleSubstituteFor("mcr.microsoft.com/mssql/server");
-
-    String MSSQL_SERVER_2017 = "mcr.microsoft.com/mssql/server:2017-CU12";
-    String MSSQL_SERVER_2019 = "mcr.microsoft.com/mssql/server:2019-GA-ubuntu-16.04";
 }
