Тест Junit: NoSuchElementException, Mock getConnectionJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Тест Junit: NoSuchElementException, Mock getConnection

Сообщение Anonymous »

Я пытаюсь написать тест Junit, но получаю исключение java.util.NoSuchElementException. Имея ограниченные знания о макетах и ​​junit, я понимаю, что DriverManager.getConnection необходимо имитировать/заглушить.
Как я могу это сделать. Любая помощь приветствуется.
Цель состоит в том, чтобы запустить тест junit без доступа к фактическому источнику базы данных.
public class DatabricksQueryExecutorTests {
@Test
public void testReadUnityTableDataAsJson() throws SQLException {
// Create a mock DatabricksConfig object
DatabricksConfig databricksConfig = new DatabricksConfig();
databricksConfig.setHost("example.com");
databricksConfig.setHttpPath("/api/2.0");
databricksConfig.setAccessToken("your-access-token");
databricksConfig.setUsername("your-username");

// Create a mock SQL query
String sqlQuery = "SELECT * FROM table";

// Create a mock ResultSet with sample data
ResultSet resultSet = Mockito.mock(ResultSet.class);
Mockito.when(resultSet.next()).thenReturn(true, false);
Mockito.when(resultSet.getMetaData()).thenReturn(Mockito.mock(ResultSetMetaData.class));
Mockito.when(resultSet.getMetaData().getColumnCount()).thenReturn(2);
Mockito.when(resultSet.getMetaData().getColumnName(1)).thenReturn("column1");
Mockito.when(resultSet.getMetaData().getColumnName(2)).thenReturn("column2");
Mockito.when(resultSet.getString(1)).thenReturn("value1");
Mockito.when(resultSet.getString(2)).thenReturn("value2");

// Create a mock Connection and Statement
Connection connection = Mockito.mock(Connection.class);
Statement statement = Mockito.mock(Statement.class);
Mockito.when(connection.createStatement()).thenReturn(statement);
Mockito.when(connection.createStatement().executeQuery(sqlQuery)).thenReturn(resultSet);

// Create an instance of DatabricksQueryExecutor
DatabricksQueryExecutor queryExecutor = new DatabricksQueryExecutor();

// Call the method under test
JsonArray jsonArray = queryExecutor.readUnityTableDataAsJson(sqlQuery, databricksConfig);

// Verify the result
Assertions.assertEquals(1, jsonArray.size());
JsonObject jsonObject = jsonArray.get(0).getAsJsonObject();
Assertions.assertEquals("value1", jsonObject.get("column1").getAsString());
Assertions.assertEquals("value2", jsonObject.get("column2").getAsString());
}
}

Ошибка:
java.util.NoSuchElementException
at java.base/java.util.StringTokenizer.nextToken(StringTokenizer.java:347)
at com.databricks.client.jdbc.common.BaseConnectionFactory.acceptsURL(Unknown Source)
at com.databricks.client.jdbc.common.AbstractDriver.connect(Unknown Source)
at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:681)
at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:229)
at com.se.epx.dain.databricksqueryexecutor.DatabricksQueryExecutorTest.testReadUnityTableDataAsJson(DatabricksQueryExecutorTest.java:38)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
at org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63)
at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)
at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)
at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
at org.junit.runners.ParentRunner.run(ParentRunner.java:413)
at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
at org.junit.runner.JUnitCore.run(JUnitCore.java:115)
at org.junit.vintage.engine.execution.RunnerExecutor.execute(RunnerExecutor.java:42)
at org.junit.vintage.engine.VintageTestEngine.executeAllChildren(VintageTestEngine.java:80)
at org.junit.vintage.engine.VintageTestEngine.execute(VintageTestEngine.java:72)
at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:198)
at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:169)
at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:93)
at org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:58)
at org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:141)
at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:57)
at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:103)
at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:94)
at org.junit.platform.launcher.core.DelegatingLauncher.execute(DelegatingLauncher.java:52)
at org.junit.platform.launcher.core.SessionPerRequestLauncher.execute(SessionPerRequestLauncher.java:70)
at org.eclipse.jdt.internal.junit5.runner.JUnit5TestReference.run(JUnit5TestReference.java:100)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:40)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:529)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:756)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:452)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:210)


Подробнее здесь: https://stackoverflow.com/questions/782 ... connection
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»