iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Powermock静态方法怎么使用
  • 482
分享到

Powermock静态方法怎么使用

2023-06-04 09:06:39 482人浏览 独家记忆
摘要

本篇内容主要讲解“Powermock静态方法怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Powermock静态方法怎么使用”吧!Mockito 很强大, 但是它不支持静态方法.所以,

本篇内容主要讲解“Powermock静态方法怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Powermock静态方法怎么使用”吧!

Mockito 很强大, 但是它不支持静态方法.所以, 就用Powermock了. 要测试的对象是Controller中的接口, 对单元测试来说, 这个待测试的街口应该是一个白盒的. 所以, 其中的第三方(service,其他静态类)的调用都应该使用mock对象来stub起来. 下面是## 示例代码(随手写的,说明问题就行):

Controller:  

@Controllerpublic class MainController {    @Autowired    private MainService mainService;    @GetMapping("/hello")    public String hello(){        mainService.hello();        String result = HelloUtil.hi();        if(result.equals("hi")){            return "ok";        }else {            return "fail";        }    }}

Service:

@Service public class MainService {    public String hello(){        System.out.println("hello");        return "hello";    }}Util静态类:  ```javapublic class HelloUtil {    public static String hi(){        return "hi";    }}

我们要测试的是MainController中的hello方法.

再次注意, 是hello方法,不是hello接口.  我们的测试类:

@RunWith(PowerMockRunner.class)@PrepareForTest(HelloUtil.class)public class MainControllerTest {    [@Mock](https://my.oschina.net/mock)    private MainService mainService;    @InjectMocks    private MainController mainController;    [@Test](Https://my.oschina.net/azibug)    public void helloTest(){        PowerMockito.when(mainService.hello()).thenReturn("hello");        PowerMockito.mockStatic(HelloUtil.class);        PowerMockito.when(HelloUtil.hi()).thenReturn("hi");        HelloUtil.hi();        HelloUtil.hi();        String result = mainController.hello();        PowerMockito.verifyStatic(Mockito.times(3));        HelloUtil.hi();        HelloUtil.hi();        HelloUtil.hi();     // mainController.hello();        assertEquals(result, "ok");    }}

我们着重看的是上面的HelloUtil.hi()方法.

PowerMockito.verifyStatic(Mockito.times(3));

先说下这句的意思, 这句(后面简称静态校验)就是对静态方法的调用次数做了校验. 光看命名就能想通. 但是要注意的是, 这里的3指的是在静态校验之前的调用次数. 如果静态校验执行的次数不等于这个次数, 那么静态校验后面的静态方法就不能再执行了. 上面代码中, 在这句前一共执行了三次HelloUtil.hi(); 两次是主动明文执行的, 一次是在mainController.hello()里面执行的. 如果注释掉某一个, 那么就会看到日志打印:

org.mockito.exceptions.verification.TooLittleActualInvocations: cn.com.hanbinit.utils.HelloUtil.hi();Wanted 3 times but was 2 times.

这里只校验静态校验之前的执行次数, 后面执行多少次都没关系. 另外, 还有一点要注意的是, 在校验语句前, 我们前面给方法mock的返回值是有效的, 在校验之后就没效果了. 
所以, 我们对静态方法的测试, 应该是放在verifyStatis之前进行的.  在校验之后的执行, 是为了证明我们之前的校验是ok的.

校验之后的静态方法调用, 是一定要有的. 要不然是测试不出调用次数的. 参见下面代码:

@Test    public void helloTest(){        PowerMockito.when(mainService.hello()).thenReturn("hello");        PowerMockito.mockStatic(HelloUtil.class);        PowerMockito.when(HelloUtil.hi()).thenReturn("hi");        String result = HelloUtil.hi();        String hi = HelloUtil.hi();        PowerMockito.verifyStatic(Mockito.times(4));        assertEquals(result, "hi");    }

像上面这段代码, 测试是通过的.  改成下面这样:

@Test    public void helloTest(){        PowerMockito.when(mainService.hello()).thenReturn("hello");        PowerMockito.mockStatic(HelloUtil.class);        PowerMockito.when(HelloUtil.hi()).thenReturn("hi");        String result = HelloUtil.hi();        String hi = HelloUtil.hi();        PowerMockito.verifyStatic(Mockito.times(4));        HelloUtil.hi();        assertEquals(result, "hi");    }

就能看到日志:

org.mockito.exceptions.verification.TooLittleActualInvocations: cn.com.hanbinit.utils.HelloUtil.hi();Wanted 4 times but was 2 times.

所以, 对静态方法调用次数的校验一定是verifyStatis和之后的显示调用一起来进行的. 最后的最后, 再提一句:  如果同时有多个静态方法调用. 如果都要验证调用次数, 那么应该分别像下面这样使用多次:

PowerMockito.verifyStatic(Mockito.times(4));HelloUtil.hi();

到此,相信大家对“Powermock静态方法怎么使用”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

--结束END--

本文标题: Powermock静态方法怎么使用

本文链接: https://www.lsjlt.com/news/237137.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Powermock静态方法怎么使用
    本篇内容主要讲解“Powermock静态方法怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Powermock静态方法怎么使用”吧!Mockito 很强大, 但是它不支持静态方法.所以, ...
    99+
    2023-06-04
  • 如何使用PowerMock来Mock静态函数
    这篇文章主要介绍如何使用PowerMock来Mock静态函数,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!EasyMock和Mockito等框架,对static, final, private方法均是不能mock的。...
    99+
    2023-06-17
  • C#的静态方法怎么使用
    这篇文章主要介绍“C#的静态方法怎么使用”,在日常操作中,相信很多人在C#的静态方法怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C#的静态方法怎么使用”的疑惑有所帮助!接下来,请跟着小编一起来学习吧...
    99+
    2023-06-30
  • java静态和非静态方法怎么调用
    在Java中,静态方法和非静态方法的调用方式有所不同。 静态方法调用: 静态方法可以直接通过类名来调用,不需要创建类的实例。例如:...
    99+
    2024-04-02
  • PowerMock使用-Mock私有方法
    前言 本篇文章将说明如何使用PowerMock对私有方法进行Mock。关于使用PowerMock需要引入哪些依赖,请参考PowerMock使用-依赖准备。 正文 被测试类如下所示。 public cl...
    99+
    2023-09-16
    java 单元测试 PowerMock Mock私有方法
  • php中的静态方法怎么使用
    这篇“php中的静态方法怎么使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“php中的静态方法怎么使用”文章吧。一、什么是...
    99+
    2023-07-05
  • php的static静态方法怎么使用
    本文小编为大家详细介绍“php的static静态方法怎么使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“php的static静态方法怎么使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。php static静...
    99+
    2023-07-04
  • 怎么在java中使用静态方法
    本篇文章为大家展示了怎么在java中使用静态方法,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Java有哪些集合类Java中的集合主要分为四类:1、List列表:有序的,可重复的;2、Queue队列...
    99+
    2023-06-14
  • php中静态方法怎么访问非静态方法
    本篇内容主要讲解“php中静态方法怎么访问非静态方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“php中静态方法怎么访问非静态方法”吧!PHP中静态方法可以访问非静态方法;可以先实例化对象,然...
    99+
    2023-06-29
  • C#静态方法的使用
    一、简介 使用了static 修饰符的方法为静态方法,反之则是非静态方法。 静态方法是一种特殊的成员方法,它不属于类的某一个具体的实例,而是属于类本身。所以对静态方法不需要...
    99+
    2024-04-02
  • php中的静态属性和静态方法怎么用
    这篇文章主要介绍“php中的静态属性和静态方法怎么用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“php中的静态属性和静态方法怎么用”文章能帮助大家解决问题。在php中,通过static关键字修饰的...
    99+
    2023-06-26
  • Java中的静态字段和静态方法怎么用
    这篇文章主要介绍了Java中的静态字段和静态方法怎么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。先看看下面这一串代码:public class Mai...
    99+
    2023-06-29
  • c#怎么调用静态方法
    在 c# 中,调用静态方法可以通过两种方式:1. 使用类名直接调用;2. 使用类型名称 + 双冒号调用。 如何在 C# 中调用静态方法 什么是静态方法? 静态方法是不属于任何特定对象实...
    99+
    2024-05-12
    c#
  • c#静态方法怎么调用
    非常抱歉,由于您没有提供文章标题,我无法为您生成一篇高质量的文章。请您提供文章标题,我将尽快为您生成一篇优质的文章。...
    99+
    2024-05-14
  • Python中静态方法,类方法,属性方法怎么使用
    本篇内容介绍了“Python中静态方法,类方法,属性方法怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1.静态方法通过@static...
    99+
    2023-06-30
  • 怎样使用PowerMockito 测试静态方法
    PowerMockito 测试静态方法 假如有下面一个类DemoStatic,它里面定义了各种静态方法,这些静态方法可能是一些Utilities方法,辅助其它的类。 packag...
    99+
    2024-04-02
  • php如何使用静态方法
    本篇内容介绍了“php如何使用静态方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!在php中,通过static关键字修饰的成员方法被称为静...
    99+
    2023-06-20
  • JavaScript——为什么静态方法不能调用非静态方法
    个人简介 👀个人主页: 前端杂货铺 🙋‍♂️学习方向: 主攻前端方向,正逐渐往全干发展 📃个人状态: 研发工程师,现效力于中国工业软件事业 🚀人生格言: 积跬步至千里,积小...
    99+
    2023-08-30
    javascript 前端
  • php中静态方法有什么作用?怎么使用?
    PHP是一款以服务端脚本语言为主的编程语言,它主要用于Web应用程序的开发。在PHP中,静态方法是其中一种非常有用的语法特性之一,对于编写复杂的应用程序尤其有帮助。在本文中,我们将介绍PHP中静态方法的作用以及如何在应用程序中使用它们。一、...
    99+
    2023-05-14
    php
  • kotlin怎么调用java静态方法
    在 Kotlin 中调用 Java 的静态方法非常简单,只需要使用 Java 类的全限定名加上静态方法名即可。例如,假设有一个 Ja...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作