java - future 结果集的 JUnit 测试

标签 java unit-testing junit resultset future

我一直在模拟函数 ResultSetFuture 的测试,我使用了来自 Github 的示例(有效)用于测试 ResultSetFuture,但我正在测试/模拟的代码使用 Futures#successfulAsList 如图所示 here .所以在第 34 行中,测试只是停止并且永远不会结束。下面显示的代码是暂停的测试的一部分。

ResultSetFuture future = Mockito.mock(ResultSetFuture.class);
Mockito.doReturn(result).when(future).get();
Mockito.doReturn(future).when(session).executeAsync(Mockito.anyString());

ResultSetFuture resultF = session.executeAsync("select value from table where key='a'");

Future<List<ResultSet>> data = Futures.successfulAsList(new ArrayList(){{ add(resultF); }});
List finished = data.get(); //  <---- The test stops here

最佳答案

您需要在future 中模拟isDone 方法以指示执行完成并避免代码暂停。

ResultSetFuture future = Mockito.mock(ResultSetFuture.class);
Mockito.doReturn(result).when(future).get();
Mockito.doReturn(future).when(session).executeAsync(Mockito.anyString());
Mockito.doReturn(true).when(future).isDone(); //<-- mock to avoid halting

ResultSetFuture resultF = session.executeAsync("select value from table where key='a'");

Future<List<ResultSet>> data = Futures.successfulAsList(Collections.singletonList(resultF));
List finished = data.get(); //  <---- The test stops here

关于java - future 结果集的 JUnit 测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46589372/

相关文章:

java - 如何从 xml 读取多个子项

c# - TDD - 100% 覆盖包装 SQL 的方法

c# - 我如何模拟 Request.Url.GetLeftPart() 以便我的单元测试通过

java - 如何使用WireMock模拟一个类?

java - MobileNo 验证错误和日期时间验证技术

java - DDD/通过存储库一次保存多个实体的良好做法

c++ - 如何获取 JUnit 格式的 CMocka 报告?

java - 如何在 arquillian 服务部署中添加库?

java - DB/2 配置和 JUnit 的 Spring Boot Data JPA 问题

java - 如何将 JFileChooser 起始目录更改为桌面?