diff --git a/modules/jdbc/src/main/java/org/testcontainers/jdbc/ContainerLessJdbcDelegate.java b/modules/jdbc/src/main/java/org/testcontainers/jdbc/ContainerLessJdbcDelegate.java index 0806ddd2c31..a6ee2babea9 100644 --- a/modules/jdbc/src/main/java/org/testcontainers/jdbc/ContainerLessJdbcDelegate.java +++ b/modules/jdbc/src/main/java/org/testcontainers/jdbc/ContainerLessJdbcDelegate.java @@ -33,4 +33,23 @@ protected Statement createNewConnection() { throw new ConnectionCreationException("Could create JDBC statement", e); } } + + @Override + protected void closeConnectionQuietly(Statement statement) { + if (statement != null) { + try { + statement.close(); + } catch (Exception e) { + log.error("Could not close JDBC connection", e); + } + } + + if (connection != null) { + try { + connection.close(); + } catch (Exception e) { + log.error("Could not close JDBC connection", e); + } + } + } } diff --git a/modules/jdbc/src/test/java/org/testcontainers/jdbc/ContainerLessJdbcDelegateTest.java b/modules/jdbc/src/test/java/org/testcontainers/jdbc/ContainerLessJdbcDelegateTest.java new file mode 100644 index 00000000000..5eeae8cc8ba --- /dev/null +++ b/modules/jdbc/src/test/java/org/testcontainers/jdbc/ContainerLessJdbcDelegateTest.java @@ -0,0 +1,29 @@ +package org.testcontainers.jdbc; + +import org.junit.jupiter.api.Test; + +import java.sql.Connection; +import java.sql.Statement; + +import static org.assertj.core.api.Assertions.assertThatCode; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +class ContainerLessJdbcDelegateTest { + + @Test + void closeClosesStatementAndConnectionQuietly() throws Exception { + Connection connection = mock(Connection.class); + Statement statement = mock(Statement.class); + when(connection.createStatement()).thenReturn(statement); + + ContainerLessJdbcDelegate delegate = new ContainerLessJdbcDelegate(connection); + delegate.execute("select 1", "test.sql", 1, false, false); + + assertThatCode(delegate::close).doesNotThrowAnyException(); + + verify(statement).close(); + verify(connection).close(); + } +}