0 votes
1 view
ago in Java by (2.1k points)

I've written a factory to produce java.sql.Connection objects:

public class MySQLDatabaseConnectionFactory implements DatabaseConnectionFactory {

    @Override public Connection getConnection() {

        try {

            return DriverManager.getConnection(...);

        } catch (SQLException e) {

            throw new RuntimeException(e);

        }

    }

}

I'd like to validate the parameters passed to DriverManager.getConnection, but I don't know how to mock a static method. I'm using JUnit 4 and Mockito for my test cases. Is there a good way to mock/verify this specific use-case?

1 Answer

0 votes
ago by (21.7k points)

Try PowerMockito on head of Mockito.

Example code:

@RunWith(PowerMockRunner.class)

@PrepareForTest(DriverManager.class)

public class Mocker {

@Test

public void shouldVerifyParameters() throws Exception {

//given

PowerMockito.mockStatic(DriverManager.class);

BDDMockito.given(DriverManager.getConnection(...)).willReturn(...);

//when

sut.execute(); // System Under Test (sut)

//then

PowerMockito.verifyStatic();

DriverManager.getConnection(...);

}

...