gpt4 book ai didi

android - 使用 mockito stub void 方法

转载 作者:行者123 更新时间:2023-11-29 19:20:50 24 4
gpt4 key购买 nike

mockito-core:2.7.10

我正在使用 mockito 测试以下方法

@Override
public void detachView() {
mMovieListViewContract = null;
mMovieModelContract.releaseResources();
}

我正在对返回无效的 releaseResources 方法进行 stub 。并进行测试以确保 stub 版本仅被调用一次。

@Override
public void releaseResources() {
if(mSubscription != null && !mSubscription.isUnsubscribed()) {
mSubscription.unsubscribe();
}
}

我写了下面的测试:

@Test
public void shouldReleaseModelResourcesWhenDetached() {
doNothing().when(mockMovieListModelContract).releaseResources();

movieListPresenterContract.detachView();

verify(mockMovieListModelContract, times(1)).releaseResources();
}

我想验证 mockMovieListModelContract.releaseResources() 的 stub 版本是否只被调用一次。以下未通过测试:

verify(mockMovieListModelContract, times(1)).releaseResources();

测试失败:

Wanted but not invoked:
movieListModelContract.releaseResources();
Actually, there were zero interactions with this mock.

所以我改为使用 verifyZeroInteractions(mockMovieListModelContract); 并通过了测试。但是,验证 stub 版本仅被调用一次的测试。

最佳答案

有点直截了当:模拟框架告诉你这个方法没有在那个模拟对象上调用。

对此只有两个解释:

  • 没有真正运行您在问题中显示的生产代码(您正在测试其他东西)
  • 您的设置有问题;并且您在进行测试设置时没有“插入”模拟对象

关于android - 使用 mockito stub void 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42527648/

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