我试图弄清楚如何对 a 的回调方法进行单元测试FutureCallback<HttpClient>
,但无法弄清楚。
我有以下代码:
val latch = CountDownLatch(10)
httpClient.execute(httpPost, object: FutureCallback<HttpResponse> {
override fun completed(response: HttpResponse) {
val outputStream = ByteArrayOutputStream()
response.entity.writeTo(outputStream)
result = DataObj.parseFrom(outputStream.toByteArray())
} catch (e: IOException) {
failed(e)
} catch (e: InvalidProtocolBufferException) {
e.printStackTrace()
}
}
latch.countDown()
}
override fun failed(e: Exception) {
logger.error(e.localizedMessage, e)
latch.countDown()
}
override fun cancelled() {
logger.error("Request cancelled.")
latch.countDown()
}
})
我不确定如何强制 FutureCallback 执行已完成、失败或取消。因此latch.countDown()
永远不会调用,这意味着测试永远不会结束。
测试这种异步功能的正确方法是什么?