1

我试图弄清楚如何对 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()永远不会调用,这意味着测试永远不会结束。

测试这种异步功能的正确方法是什么?

4

0 回答 0