我正在編寫一個Api,在工作線程上執行HTTP請求,然後在完成時調用Callback-Handler的方法。單元測試多線程Api
public class GriklyClient <E,T>{
private final IHttpRequest<E,T> request;
private final ResponseListener<T> response;
protected GriklyClient (IHttpRequest<E,T> request,ResponseListener<T> response)
{
this.request = request;
this.response = response;
}
/**
* Dispatch a thread to process
* HTTP Request.
*/
public void execute()
{
Runnable thread = new Runnable()
{
public void run()
{
T result = (T) request.execute();
response.response(result);
}
};
new Thread(thread).start();
}//end execute method
}
這是對API的調用的模樣:
Grikly grikly = new Grikly(developerKey);
grikly.addValidUserCredential(email,password);
grikly.fetchUser(1, new ResponseListener<User>() {
public void response(User result) {
// TODO Auto-generated method stub
System.out.println(result);
}
});
我遇到的問題是單元測試。我的單元測試中沒有調用回調處理程序,因此即使它們應該失敗,我的測試也始終通過。
private Grikly grikly = new Grikly (developerKey);
@Test
public void fetchUser()
{
grikly.fetchUser(1, new ResponseListener<User>() {
public void response(User result) {
Assert.assertNotNull(result);
}
});
}//end fetchUser Test
如何編寫單元測試來測試此Api?