Java AWS异步处理程序的单元测试

Java AWS异步处理程序的单元测试,java,callback,amazon-sqs,Java,Callback,Amazon Sqs,如何为下面的代码编写单元测试 public CompletableFuture<String> sendMessage(final String message) { Preconditions.checkArgument(message != null, "Message can't be null"); CompletableFuture<SendMessageResult> completableFuture = new Compl

如何为下面的代码编写单元测试

public CompletableFuture<String> sendMessage(final String message) {
        Preconditions.checkArgument(message != null, "Message can't be null");

        CompletableFuture<SendMessageResult> completableFuture = new CompletableFuture<>();

        amazonSQSAsync.sendMessageAsync(sqsMessageRequestFactory.create(message), new AsyncHandler<SendMessageRequest, SendMessageResult>() {
            @Override
            public void onError(final Exception exception) {
                completableFuture.completeExceptionally(exception);
            }

            @Override
            public void onSuccess(final SendMessageRequest request, final SendMessageResult sendMessageResult) {
                completableFuture.complete(sendMessageResult);
            }
        });

        return completableFuture.thenApply(SendMessageResult::getMessageId)
            .whenComplete(this::sentMessageAsyncResult)
            .exceptionally(this::processException);
        }
公共CompletableFuture sendMessage(最终字符串消息){
前提条件.checkArgument(message!=null,“message不能为null”);
CompletableFuture CompletableFuture=新的CompletableFuture();
amazonSQSAsync.sendMessageAsync(sqsMessageRequestFactory.create(message),new AsyncHandler(){
@凌驾
公共无效单错误(最终例外){
completableFuture.completeeexception(异常);
}
@凌驾
成功时公共无效(最终SendMessageRequest请求、最终SendMessageResult SendMessageResult){
completableFuture.complete(发送消息结果);
}
});
返回completableFuture.thenApply(SendMessageResult::getMessageId)
.whenComplete(此::sentMessageAsyncResult)
.例外情况(此::processException);
}
我试过了,但没用。我如何调用completablefuture,以便得到响应以检查断言。审判方式如下:

@Test
    public void sendMessageSuccessful() {
        final SendMessageResult sendMessageResult = new SendMessageResult().withMessageId(MESSAGE_ID);
        final SendMessageRequest sendMessageRequest = new SendMessageRequest();

        when(sqsMessageRequestFactory.create(anyString())).thenReturn(sendMessageRequest);

        sqsAsyncClientImpl.sendMessage("any");

        @SuppressWarnings("unchecked") ArgumentCaptor<AsyncHandler<SendMessageRequest, SendMessageResult>> argumentCaptor = ArgumentCaptor.forClass(AsyncHandler.class);

        verify(amazonSQSAsync, timeout(100).times(1)).sendMessageAsync(eq(sendMessageRequest), argumentCaptor.capture());

        argumentCaptor.getValue().onSuccess(sendMessageRequest, sendMessageResult);

    }
@测试
public void sendMessageSuccessful(){
final SendMessageResult SendMessageResult=新的SendMessageResult(),带有消息ID(消息ID);
final SendMessageRequest SendMessageRequest=新SendMessageRequest();
当(sqsMessageRequestFactory.create(anyString())。然后返回(sendMessageRequest);
sqsAsyncClientImpl.sendMessage(“任何”);
@SuppressWarnings(“未选中”)ArgumentCaptor ArgumentCaptor=ArgumentCaptor.forClass(AsyncHandler.class);
验证(amazonsqasync,timeout(100).times(1)).sendMessageAsync(eq(sendMessageRequest),argumentCaptor.capture());
argumentCaptor.getValue().onSuccess(sendMessageRequest、sendMessageResult);
}