How do you test code that uses DriverManager?

Learn how to effectively test code that utilizes DriverManager in Java. This guide explains the best practices for mocking database connections and ensuring your tests are reliable and manageable.

Java, DriverManager, testing, mock database, unit testing, JDBC, code testing

import static org.mockito.Mockito.*;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import org.junit.Test;
import org.junit.Assert;

public class DatabaseTest {

    @Test
    public void testDatabaseConnection() {
        try {
            // Create a mock connection
            Connection connection = mock(Connection.class);
            // Use DriverManager to simulate the behavior
            when(DriverManager.getConnection(anyString(), anyString(), anyString())).thenReturn(connection);
            
            // Your code that calls DriverManager to get a connection
            Connection conn = DriverManager.getConnection("jdbc:mysql://localhost/test", "user", "password");
            
            // Assert that the mock connection was returned
            Assert.assertNotNull(conn);
            
            // Additional assertions and verifications can be done here

        } catch (SQLException e) {
            e.printStackTrace();
            Assert.fail("SQLException thrown: " + e.getMessage());
        }
    }
}

Java DriverManager testing mock database unit testing JDBC code testing