如何使用回调测试函数?

时间:2015-08-17 12:30:43

标签: java junit

假设我们有一个回调函数的接口:

public interface Callback
{
    void foo();
}

我们有一个方法可以调用作为参数给出的回调:

public void doSomething(final Callback callback)
{
    // Do something, like asynchronously fetch something from a server
    asyncStuff.doSomethingAsync(new AsyncResponseHandler()
    {
        @Override
        public void asyncStuffDone()
        {
            // Call the callback
            callback.foo();
        }
    });
}

现在,问题是:鉴于这种情况,如何测试回调确实被调用?

1 个答案:

答案 0 :(得分:4)

为测试提供模拟Callback对象,并验证是否已调用该方法。例如,使用Mockito作为模拟库,您将创建一个模拟对象(编排):

Callback myMock = mock(Callback.class);

然后将其提供给正在测试的代码(行为):

someObject.doSomething(myMock);

并验证该方法是否被调用(断言):

verify(myMock, times(1)).foo();