我正在尝试为我的应用程序中的 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/