gpt4 book ai didi

java - 单元测试回调

转载 作者:搜寻专家 更新时间:2023-11-01 09:38:38 26 4
gpt4 key购买 nike

我正在尝试为我的应用程序中的 Presenter 编写单元测试,并且我有以下用例,我不知道应该如何编写单元测试。

interface ICallback
{
void onConfirm(String str);
}

interface IPopup
{
void show(ICallback callback);
}

class Presenter
{
private IPopup m_popup;
private String m_result;

Presenter(IPopup popup)
{
m_popup = popup;
}

public String getResult() { return m_result; }

void onClick()
{
m_popup.show(new ICallback()
{
@Override
public void onConfirm(String str)
{
m_result = str;
}
});
}
}

函数 show 创建一个 PopupWindow,它有一个 OK 按钮,其 onClick 方法调用 ICallback.onConfirm

我想测试 onConfirm() 中发生的事情,但我不知道该怎么做。如何做到这一点?或者我应该以不同的方式构建我的代码以使其更易于测试吗?

最佳答案

找到解决方案

我使用 ArguementCaptor 来捕获回调,然后调用回调的 onConfirm 方法并验证它是否完成了它的工作。

@Mock IPopup m_popup;

@Test
public void callbackTest()
{
String str = "test";
ArgumentCaptor<ICallback> argument = ArgumentCaptor.forClass(ICallback.class);

m_presenter.onClick();
verify(m_popup).show(argument.capture());

argument.getValue().onConfirm(str);
assertEquals(str, m_presenter.getResult());
}

关于java - 单元测试回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41301261/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com