Mic*_*ler 5 java android unit-testing asynchronous mocking
我有一个方法,它接收一个带有 onSuccess(result) 和 onFail(error) 方法的侦听器(接口)。
被测试的方法执行一些操作(在另一个线程上)并最终用一个答案调用侦听器。
方法本身的示例代码(不是测试):
testedObject.performAsyncAction("some data", new IListener(){
@Override
public void onSuccess(int result) {
if (result == 1) { /* do something */ }
else if (result == 2) { /* do something else */ }
}
@Override
public void onFailure(Error error) {
if (error.getMessage().equals("some error")) { /* do something */ }
else if (error.getMessage().equals("another error")) { /* do something else */ }
}
});
Run Code Online (Sandbox Code Playgroud)
我想对这种方法进行一些测试:
谢谢!
对于本例,我使用 Mockito Answer 对象。这将是一个成功案例的测试:
Answer<Void> myAnswer = new Answer<Void>() {
public Void answer(InvocationOnMock invocation) {
Callback callback = (Callback) invocation.getArguments()[1]; // second argument in performAsyncAction
callback.onSuccess(1); // this would be 1 or 2 in your case
return null;
}
};
doAnswer(myAnswer).when(testedObject).performAsyncAction("some data", any(Callback.class));
Run Code Online (Sandbox Code Playgroud)
对于失败的情况,只需创建另一个具有不同答案的测试即可。有关更多信息,请查看此博客文章。
| 归档时间: |
|
| 查看次数: |
2930 次 |
| 最近记录: |