java - 在 Java 7 中的间谍中对 @Asynchronous 方法进行单元测试
问题描述
我正在尝试测试一些糟糕的遗留代码(Java 7)
我需要监视无状态服务,但调用异步方法
我得到错误
对象不代表实际的未来
我应该如何尝试和测试呢?
@InjectMocks
private OrderDataImport spyImporter;
/* has spyImporter as a dependency */
@InjectMocks
private ImportService sut; /* system under test */
@Before
public void setUp() {
// create spy
spyImporter = Mockito.spy(new OrderDataImport());
MockitoAnnotations.initMocks(this);
}
@Test
public Test() {
sut.import();
}
导入代码
class ImportService {
@EJB
private OrderDataImport dependency;
public boolean import() {
List<Future<Result>> resultList = new ArrayList<>();
int THREAD_COUNT = 3;
while (THREAD_COUNT-- > 0)
resultList.add(dependency.create(...));
for (int i = 0; i < resultList.size(); i++) {
/* Object does not represent an actual Future */
Result result = resultList.get(i).get(60, TimeUnit.MINUTES);
}
}
}
解决方案
也许你需要mockito的静态方法when(),试试看
doReturn({Future subclass instance}).when({reference spyImporter}).get(anyInt(),xx)
推荐阅读
- python - 替换文本文件中不正确的 url 并在 Python 中修复它们
- c - Makefile 从其他目录添加库
- php - PHP 错误:在第 1344 行的 /vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php 中的 null 上调用成员函数 connection()
- javascript - Electron JS 从流中设置视频源
- python - 如何扫描字符串中的字符以匹配不同列中的另一个字符串
- python - 调整熊猫数据框中的列表长度
- python - 无法确定 NumPy 数组的切片索引
- java - 如何使用java(Spring)在json中获取这种类型的结构响应
- c# - C# Rest web 服务发布参数始终为空
- nlp - 如何优化 Stanza 模型的内存占用