Mock DriverManager using powermockito

42 Views Asked by At
public class Manager {
    
    public void testConnection() throws SQLException {
        Connection c = DriverManager.getConnection("", "", "");
        c.prepareStatement("");
    }
}

import static org.junit.Assert.assertEquals;
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.Mockito.when;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;

import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.MockitoAnnotations;
import org.powermock.api.mockito.PowerMockito;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;

@RunWith(PowerMockRunner.class)
@PrepareForTest({DriverManager.class})
public class JUnit4PowerMockMockitoStaticExample2 {

    @Mock
    Connection c;

    @Mock
    PreparedStatement ps;

    @Before
    public void setUp() throws SQLException {
        MockitoAnnotations.initMocks(this);
        PowerMockito.mockStatic(DriverManager.class);
        when(DriverManager.getConnection(anyString(), anyString(), anyString())).thenReturn(c);
        when(c.prepareStatement(anyString())).thenReturn(ps);
    }

    @Test
    public void testCon() throws SQLException {
        Manager m = new Manager();
//      Connection c = DriverManager.getConnection("", "", "");
//      c.prepareStatement("");
        m.testConnection();
    }
}

<properties>
        <junit4.version>4.12</junit4.version>
        <testng.version>6.14.3</testng.version>
        <powermock.version>2.0.0-beta.5</powermock.version>
        <java.version>8</java.version>
        <easymock.version>3.6</easymock.version>
        <mockito-core.version>2.19.0</mockito-core.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>${junit4.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.testng</groupId>
            <artifactId>testng</artifactId>
            <version>${testng.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.easymock</groupId>
            <artifactId>easymock</artifactId>
            <version>${easymock.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.powermock</groupId>
            <artifactId>powermock-module-junit4</artifactId>
            <version>${powermock.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.powermock</groupId>
            <artifactId>powermock-module-testng</artifactId>
            <version>${powermock.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.powermock</groupId>
            <artifactId>powermock-api-easymock</artifactId>
            <version>${powermock.version}</version>
            <scope>test</scope>
        </dependency>
        
        <!--mockito  -->
        <dependency>
            <groupId>org.mockito</groupId>
            <artifactId>mockito-core</artifactId>
            <version>${mockito-core.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.powermock</groupId>
            <artifactId>powermock-api-mockito2</artifactId>
            <version>${powermock.version}</version>
            <scope>test</scope>
        </dependency>

DriverManager call from Manager class testConnection method is not getting mocked, where as if I uncomment line in testCon method, DriverManager is getting mocked in Test class properly. Can someone please suggest, whats going wrong here.

How to mock DriverManager using powermockito in Manager class?

0

There are 0 best solutions below