2014-03-29 63 views
0

我使用的應用程序對第​​三方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

如何使用mocks? – MGorgon

回答

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);