首页 > 其他分享 >mockito5.4.0单元测试(11) --do when家族的方法们:doReturn()|doThrow()| doAnswer()| donnothing ()|doCallRealMetho

mockito5.4.0单元测试(11) --do when家族的方法们:doReturn()|doThrow()| doAnswer()| donnothing ()|doCallRealMetho

时间:2023-06-26 16:48:08浏览次数:64  
标签:11 do donnothing log get clear when mockMap size

mockito官方文档地址: https://www.javadoc.io/doc/org.mockito/mockito-core/latest/org/mockito/Mockito.html#do_family_methods_stubs

// mock一个对象
HashMap mockMap = mock(HashMap.class);

 

 doCallRealMethod方法示例:

// 当mock对象调用put和size方法时,都调用真实的方法
doCallRealMethod().when(mockMap).put(anyString(), any());
doCallRealMethod().when(mockMap).size();
mockMap.put("key1", "value1");
mockMap.put("key2", "value2");
log.info("print0: size = {}", mockMap.size());

 

 doThrow方法示例:

try {
    doThrow(new RuntimeException()).when(mockMap).get("0");
    log.info("print1: {}", mockMap.get("0"));
} catch (Exception e) {
    log.error("doThrow...when mockMap.get(\"0\")");
}

 

doReturn方法示例:

doReturn("aaa-value").when(mockMap).get("aaa");
log.info("print1: {}", mockMap.get("aaa"));

 

doAnswer方法示例:

doAnswer(new Answer() {
    public Object answer(InvocationOnMock invocation) {
        Object[] args = invocation.getArguments();
        Object mock = invocation.getMock();
        return "自定义返回值: " + Arrays.toString(args); // 可以自定义返回值
    }
}).when(mockMap).get("bbb");
log.info("print2: {}", mockMap.get("bbb"));  // 自定义返回值: bbb

 

doNothing方法示例:

doCallRealMethod().when(mockMap).put(anyString(), any());
doCallRealMethod().when(mockMap).size();
mockMap.put("key1", "value1");
mockMap.put("key2", "value2");
doNothing().when(mockMap).clear();  // 如果调用clear,则什么都不做
mockMap.clear();  // 这里什么都不做
log.info("print3: size = {}", mockMap.size());   // 因为clear什么都没做,所以这里打印的是size=2

try {
    doNothing().   // 第一次调用clear什么都不做
            doThrow(new RuntimeException())  // 第二次调用clear的时候报错
            .when(mockMap).clear();

    mockMap.clear();// 第一次调用clear什么都不做
    log.info("print4: mockMap.clear()");

    mockMap.clear();// 第二次调用clear的时候报错\
    log.info("print5: 这一条日志应该打印不出来了");

} catch (Exception e) {
    log.error("doThrow...when mockMap.clear()");
}

 

end.

标签:11,do,donnothing,log,get,clear,when,mockMap,size
From: https://www.cnblogs.com/zhuwenjoyce/p/17506089.html

相关文章

  • vue11进阶
    内置组件一、TransitionVue提供了两个内置组件,可以帮助你制作基于状态变化的过渡和动画:<Transition>会在一个元素或组件进入和离开DOM时应用动画。本章节会介绍如何使用它。<TransitionGroup>会在一个v-for列表中的元素或组件被插入,移动,或移除时应用动画。我们将在......
  • Selenium基础:特殊Dom结构操作 07
    特殊Dom结构是指对元素不能直接操作,需要进行特殊定位切换到它所在的Dom结构,然后才能对其元素进行操作1、windows弹窗--alertconfirmprompt使用driver.switch_to.alert方法alert类操作方法:accept():确定dismiss():取消text():获取弹出框内的内容send_keys(keysToSend):输入......
  • window CMD常用命令
    查看ip地址、HDCP启动、电脑名称ipconfig\all查看用户名称netuser查看电脑配置在运行中输入【dxdiag】打开注册表regedit计算机管理compmgmt计算器calc本地安全策略secpol......
  • 您需要配置好的 Python 2 SDK 来渲染 Epydoc docstring
    今天给代码写注释,写完以后,鼠标放在方法上注释显示异常。我发现是因为我注释的格式不对。把@改成:后问题解决......
  • WIN11 INTEL 12-13代大小核默认调度策略
    WIN11INTEL12-13代大小核默认调度策略  生效的异类策略:使用异类策略0.异类线程调度策略:自动。异类短运行线程调度策略:自动。......
  • Docker 中的 .NET 异常了怎么抓 Dump
    一:背景1.讲故事有很多朋友跟我说,在Windows上看过你文章知道了怎么抓Crash,CPU爆高,内存暴涨等各种Dump,为什么你没有写在Docker中如何抓的相关文章呢?瞧不上吗?哈哈,在DUMP的分析旅程中,跑在Docker中的.NET占比真的不多,大概10个dump有1-2个是docker中的,市场决定了我......
  • 11、默认路由(缺省路由)、浮动路由(主备路由)
    静态路由分析可看,管理员配置的路由条目比较多,当网络环境比较大时,路由条目就非常复杂,尤其是部署在企业出口的路由器,不可能明细化配置复杂的静态路由信息,一般在边界路由器配置默认路由,也是静态路由的一种方式。默认路由格式:【H3C】iproute-static0.0.0.00.0.0.0下一跳IP地址......
  • Docker 查看容器的启动命令
    1、背景由于docker可能不是你本人部署的,可能会遇到服务需要迁移,但是又不知道之前部署的命令。runlike是一个用于查看Docker容器的启动命令的工具。它可以让您以一种更直观的方式查看容器的启动命令,包括容器的名称、镜像、挂载的卷以及其他参数。Runlike是一个用Python编写的工具......
  • 32.docker mysql 启动问题随笔
    dockercpmysql:/etc/mysql/mysql.conf.d/mysqld.cnf/home/mysql/confmv mysqld.cnfmy.cnf#!/bin/bashdockerstopMySQLdockerrm-fmysqldockerrun--privileged=true\ -idt\ -p3307:3306\ --namemysql\ --restart=always\ -v/home/my......
  • Office Add-ins documentation
    OfficeAdd-insdocumentation-OfficeAdd-ins|MicrosoftLearn Exceladd-intutorial-OfficeAdd-ins|MicrosoftLearn ......