首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >莫奇托doNothing与Mockito.mockStatic

莫奇托doNothing与Mockito.mockStatic
EN

Stack Overflow用户
提问于 2020-11-06 15:47:13
回答 2查看 11.5K关注 0票数 6

我使用Mockito和mockito内嵌来模拟静态方法。我试图将doNothing或类似的行为应用于静态的void方法。下面是解决办法,但是我认为应该有一种更方便的方法来用更少的代码来实现这一点。

代码语言:javascript
运行
复制
try (MockedStatic<UtilCalss> mock = Mockito.mockStatic(UtilCalss.class)) {

     mock.when(() -> UtilCalss.staticMethod(any()))
            .thenAnswer((Answer<Void>) invocation -> null);

}

如果这是一种非静态方法,我们可以简单地这样做:

代码语言:javascript
运行
复制
doNothing().when(mock).nonStaticMethod(any());

但我也想对静态方法做同样的处理。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-11-13 21:04:49

你不需要在那个电话上存根。

doNothing是在模拟中调用的void方法的默认行为。

票数 13
EN

Stack Overflow用户

发布于 2021-05-08 19:20:36

mockito内联包括mockito核心:

代码语言:javascript
运行
复制
        <!-- Mockito-inline include Mockito-code in same version - Useful for Mock static method -->
        <!-- See https://asolntsev.github.io/en/2020/07/11/mockito-static-methods/ -->
        <dependency>
            <groupId>org.mockito</groupId>
            <artifactId>mockito-inline</artifactId>
            <version>3.6.28</version>
        </dependency>

如果您正在测试静态方法,则返回nothing,=>不使用mock.when =>,只需执行要测试和验证的方法:

代码语言:javascript
运行
复制
try (MockedStatic<UtilClass> mock = Mockito.mockStatic(UtilClass.class)) {

     mock.when(() -> UtilClass.staticMethod(any()))
            .thenAnswer((Answer<Void>) invocation -> null);

     App.main(null); // example : I'm testing main method from App class

     mock.verify(UtilClass::staticMethod); // I verify static method from UtilClass was called.

}

resources

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64717683

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档