Я предполагаю, что это POM проблема с зависимостями, но я не могу ее сузить, буду очень признателен за любую помощь.
Код: Выделить всё
import static org.junit.Assert.assertEquals;
import static org.mockito.ArgumentMatchers.anyString;
import static org.powermock.api.mockito.PowerMockito.*;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.Statement;
import java.sql.SQLException;
import java.sql.DriverManager;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.Mockito;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;
import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
@RunWith(PowerMockRunner.class)
@PrepareForTest({DatabricksQueryExecutor.class, DriverManager.class})
public class DatabricksQueryExecutorTest {
@Mock
private Connection mockConnection;
@Mock
private Statement mockStatement;
@Mock
private ResultSet mockResultSet;
@Mock
private ResultSetMetaData mockResultSetMetaData;
@InjectMocks
private DatabricksQueryExecutor executor;
@Test
public void testReadUnityTableDataAsJson() throws Exception {
mockStatic(DriverManager.class);
when(DriverManager.getConnection(anyString())).thenReturn(mockConnection);
when(mockConnection.createStatement()).thenReturn(mockStatement);
when(mockStatement.executeQuery(anyString())).thenReturn(mockResultSet);
when(mockResultSet.next()).thenReturn(true, false);
when(mockResultSet.getMetaData()).thenReturn(mockResultSetMetaData);
when(mockResultSetMetaData.getColumnCount()).thenReturn(2);
when(mockResultSetMetaData.getColumnName(1)).thenReturn("id");
when(mockResultSetMetaData.getColumnName(2)).thenReturn("name");
when(mockResultSet.getString(1)).thenReturn("1");
when(mockResultSet.getString(2)).thenReturn("John");
JsonArray result = executor.readUnityTableDataAsJson(mockConnection, "SELECT * FROM unity_table");
assertEquals(1, result.size());
JsonObject jsonObject = result.get(0).getAsJsonObject();
assertEquals("1", jsonObject.get("id").getAsString());
assertEquals("John", jsonObject.get("name").getAsString());
// Verify method calls
Mockito.verify(mockConnection, Mockito.times(1)).createStatement();
Mockito.verify(mockStatement, Mockito.times(1)).executeQuery("SELECT * FROM unity_table");
Mockito.verify(mockResultSet, Mockito.times(1)).next();
Mockito.verify(mockResultSetMetaData, Mockito.times(1)).getColumnCount();
Mockito.verify(mockResultSetMetaData, Mockito.times(2)).getColumnName(Mockito.anyInt());
Mockito.verify(mockResultSet, Mockito.times(1)).getString(Mockito.anyInt());
Mockito.verifyNoMoreInteractions(mockConnection, mockStatement, mockResultSet, mockResultSetMetaData);
}
@Test
public void testReadUnityTableDataAsJsonEmptyResultSet() throws Exception {
mockStatic(DriverManager.class);
when(DriverManager.getConnection(anyString())).thenReturn(mockConnection);
when(mockConnection.createStatement()).thenReturn(mockStatement);
when(mockStatement.executeQuery(anyString())).thenReturn(mockResultSet);
when(mockResultSet.next()).thenReturn(false);
JsonArray result = executor.readUnityTableDataAsJson(mockConnection, "SELECT * FROM unity_table");
assertEquals(0, result.size());
Mockito.verify(mockConnection, Mockito.times(1)).createStatement();
Mockito.verify(mockStatement, Mockito.times(1)).executeQuery("SELECT * FROM unity_table");
Mockito.verify(mockResultSet, Mockito.times(1)).next();
verifyNoMoreInteractions(mockConnection, mockStatement, mockResultSet, mockResultSetMetaData);
}
@Test(expected = SQLException.class)
public void testReadUnityTableDataAsJsonSQLException() throws Exception {
mockStatic(DriverManager.class);
when(DriverManager.getConnection(anyString())).thenThrow(new SQLException("Mock SQL Exception"));
executor.readUnityTableDataAsJson(mockConnection, "SELECT * FROM unity_table");
}
}Зависимости POM:
< div class="snippet">
Код: Выделить всё
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-tomcat
org.springframework.boot
spring-boot-starter-jetty
org.springframework.boot
spring-boot-starter-actuator
io.micrometer
micrometer-registry-prometheus
org.springframework.boot
spring-boot-starter-oauth2-resource-server
org.springframework.boot
spring-boot-starter-security
org.powermock
powermock-module-junit4
2.0.9
test
org.powermock
powermock-api-mockito2
2.0.9
test
junit
junit
4.13.2
test
Я обнаружил аналогичную проблему, связанную с зависимостями, но в данном случае я не могу этого понять
Подробнее здесь: https://stackoverflow.com/questions/783 ... 98-seconds