1. ホーム
  2. java

[解決済み] Mockitoで静的メソッドをモックする

2022-03-22 02:08:17

質問

を生成するファクトリーを書きました。 java.sql.Connection オブジェクトを作成します。

public class MySQLDatabaseConnectionFactory implements DatabaseConnectionFactory {

    @Override public Connection getConnection() {
        try {
            return DriverManager.getConnection(...);
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }
    }
}

に渡されたパラメータを検証したい。 DriverManager.getConnection しかし、静的メソッドをモックする方法がわかりません。私はテストケースにJUnit 4とMockitoを使っています。この特定のユースケースをモック/検証する良い方法はありますか?

どのように解決するのですか?

使用方法 パワーモッキート をMockitoの上に置く。

コード例です。

@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(...);

    }

詳細はこちら