java - 如何使用回调测试函数?

标签 java junit

假设我们有一个这样的回调函数接口(interface):

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

现在,问题来了:在这种情况下,如何测试回调是否确实被调用了?

最佳答案

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

Callback myMock = mock(Callback.class);

然后将其提供给被测试的代码(act):

someObject.doSomething(myMock);

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

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

关于java - 如何使用回调测试函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32050478/

相关文章:

java - 如何使用Eclipse JDT统计JDK中所有方法调用

java - 需要首行缩进的 JTextArea(或类似的)

java - 如何使用 EasyMock 隔离同一类中的其他方法

java - 如何在不将方法设为静态的情况下使用@Enclosed

java - 使用 Java Play Framework 2.3.x 在 Controller 中上传单元测试文件

junit - 为什么 IntelliJ 需要 20 秒以上才能启动单元测试?

java - 使用 JRE 1.8 或更高版本运行 Android Studio

java - Spring RestTemplate 将属性 HttpHeader 复制到 RequestBody

java - 在java中找到二维数组的总和

java - 展平静态成员类中的 JUnit 测试