我使用的应用程序对第三方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
}
我如何进行单元测试这样的方法?
答案 0 :(得分:0)
您可以使用FutureTask的get() 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);