Как издеваться над DriverManager.getConnection (…)?
У меня есть класс, который подключается к базе данных H2 и выполняет несколько операторов SQL.
public class H2Persistence implements IPersistence {
private Connection conn;
@Override
public void open() {
try
{
Class.forName("org.h2.Driver");
conn = DriverManager.getConnection(CONN_TYPE_USER_HOME);
final Statement stmt = conn.createStatement();
stmt.executeUpdate("CREATE TABLE PERSON(" +
"ID BIGINT,"+
"AGEGROUP VARCHAR(255),"+
"MONTHLY_INCOME_LEVEL VARCHAR(255)," +
"GENDER VARCHAR(1),"+
"HOUSEHOLD_ID BIGINT)");
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}
...
}
Я хочу написать модульный тест, который проверяет, что вopen
метод определенного оператора SQL (DROP TABLE IF EXISTS PERSON
) выполнен.
Для этого я написал следующий тест:
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
import static org.powermock.api.mockito.PowerMockito.mockStatic;
import static org.powermock.api.mockito.PowerMockito.when;
@RunWith(PowerMockRunner.class)
@PrepareForTest(DriverManager.class)
public class H2PersistenceTest {
@Test
public void testDropPersonIsCalled() throws SQLException {
final Statement statement = mock(Statement.class);
final Connection connection = mock(Connection.class);
when(connection.createStatement()).thenReturn(statement);
mockStatic(DriverManager.class);
when(DriverManager.getConnection(H2Persistence.CONN_TYPE_USER_HOME)).thenReturn
(connection);
final H2Persistence objectUnderTest = new H2Persistence();
objectUnderTest.open();
verify(statement.executeUpdate("DROP TABLE IF EXISTS PERSON"));
}
}
Но это нет работа - вместо фиктивного соединения,DriverManager
возвращает реальное соединение.
Как я могу это исправить (сделатьDriverManager
обратное соединение макет в тесте)?
Вот'сpom.xml
моего проекта, может быть, там что-то не так.
4.0.0
ru.mycompany
myproduct
1.0-SNAPSHOT
UTF-8
1.5.1
1.6
1.6
junit
junit
4.10
test
org.easytesting
fest-util
1.2.3
org.easytesting
fest-assert-core
2.0M8
com.google.guava
guava
15.0
org.mockito
mockito-all
1.9.5
com.h2database
h2
1.3.173
org.powermock
powermock-module-junit4
${powermock.version}
test
org.powermock
powermock-api-mockito
${powermock.version}
test