如何对服务端点的异步调用进行单元测试

时间:2014-03-29 20:27:03

标签: java web-services asynchronous

我使用的应用程序对第​​三方Web服务端点进行异步调用,但从未收到响应。异步调用将一些参数传递给终点。

实际进行异步调用的方法会准备作为参数传递的对象,如果对象无效,则返回错误代码。但是方法本身内的异步调用不会返回。无法在此处发布代码,但这里是伪代码:

public String makeAsyncCall(Object obj1, Object obj2, Object obj3)
{
    if(isValid(obj1)) //call to external util method to checks if fields are notnull or notempty
    {
        getValueFromObj1(obj1) //call to private method to get a value and process the value
    }
    else
    {
        return errorcode;
    }           
    ..... //other objects are validated

    makeAsyncCall(Object obj1, Object obj2, Object obj3); //returns void
}

我如何进行单元测试这样的方法?

1 个答案:

答案 0 :(得分:0)

您可以使用FutureTaskget() method with timeout编写一个简单的异步同步适配器。

FutureTask<X> callback; // task should be run from the thread receiving async replies
...
invokeWebSericeMethodAsyncAndCallTheArgWhenDone(callback);
X value = callback.get(5, TimeUnit.SECONDS);