gpt4 book ai didi

java - 使用 Mockito 模拟接口(interface)时出现异常

转载 作者:行者123 更新时间:2023-12-02 11:03:27 24 4
gpt4 key购买 nike

我正在尝试测试是否调用了接口(interface)方法并传入了确切的值。我收到以下错误:

org.mockito.exceptions.misusing.UnfinishedVerificationException: Missing method call for verify(mock) here: -> at com.example.app.initialize(example.java:136)

Example of correct verification: verify(mock).doSomething()

此验证行抛出错误:

Mockito.verify(callback).onInitializeResult("初始化");

我的界面类:

public interface InitCallback {
/**
* Returns whether or not the app was initialized. .
*/
void onInitializeResult(String result);
}

我的单元测试:

@Test
public void initializationTest(){
InitCallback callback = Mockito.spy(new InitCallback() {
@Override
public void onInitializeResult(String result) {

}
});
mExample.initialize(mContext, callback);
Mockito.verify(callback).onInitializeResult("initialized");
}

我还尝试将回调模拟替换为:

InitCallback callback = Mockito.mock(InitCallback.class);
Mockito.doNothing().when(callback).onInitializeResult(Mockito.anyString());

但是我仍然遇到同样的错误。该接口(interface)只有 1 个方法,并且不是最终的。有什么想法吗?

最佳答案

事实证明,mExample 正在调用另一个未定义方法的模拟实例。来自另一篇 Stack Overflow 帖子 Link

Mockito throws exceptions if you misuse it so that you know if your tests are written correctly. The gotcha is that Mockito does the validation next time you use the framework (e.g. next time you verify, stub, call mock etc.). But even though the exception might be thrown in the next test, the exception message contains a navigable stack trace element with location of the defect. Hence you can click and find the place where Mockito was misused.

因此,在问题中发布的情况下,异常是在

中生成的
mExample.initialize(mContext, callback);

但直到下次调用验证时才会抛出。

关于java - 使用 Mockito 模拟接口(interface)时出现异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51157277/

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