Answer接口说明

对mock对象的方法进行调用预期的设定,可以通过thenReturn()来指定返回值,thenThrow()指定返回时所抛异常,通常来说这两个方法足以应对一般的需求。但有时我们需要自定义方法执行的返回结果,Answer接口就是满足这样的需求而存在的。另外,创建mock对象的时候所调用的方法也可以传入Answer的实例mock(java.lang.Class<T> classToMock, Answer defaultAnswer),它可以用来处理那些mock对象没有stubbing的方法的返回值。

使用方法



  1.    @Test(expected = BatchExecutException.class)
  2.    public void testCheckExcepHaltForSendGooods01() {
  3.        SendGoodsParams params = new SendGoodsParams();
  4.        params.createParams(20, user.getTaobaoId());
  5.        Long[] taobaoIdsArray = params.taobaoIds.toArray(new Long[20]);
  6.        Long[] tidsArray = params.tids.toArray(new Long[20]);
  7.        Long[] sysTidArray = params.sysTids.toArray(new Long[20]);
  8.        Mockito.when(tradeQueryServiceNoSolr.queryByPrimaryKeysBase(Mockito.any(User.class),
  9.                Mockito.anyList(), Mockito.anyBoolean())).then(new Answer<Object>() {
  10.            @Override
  11.            public Object answer(InvocationOnMock invocation) throws Throwable {
  12.                Object[] args = invocation.getArguments();
  13.                List<TradePrimaryKey> tradePrimaryKeys = (List<TradePrimaryKey>) args[1];
  14.                List<TbTrade> trades = new ArrayList<TbTrade>();
  15.                for (TradePrimaryKey tpk : tradePrimaryKeys) {
  16.                    TbTrade temp = new TbTrade();
  17.                    temp.setId(1L);
  18.                    temp.setTaobaoId(tpk.getTaobaoId());
  19.                    temp.setTid(tpk.getTid());
  20.                    temp.setSysTid(tpk.getSysTid());
  21.                    temp.setMergeSplitType(0);
  22.                    TbOrder tbOrder = new TbOrder();
  23.                    tbOrder.setTid(tpk.getTid());
  24.                    tbOrder.setOid(tpk.getTid());
  25.                    tbOrder.setRefundId("1111");
  26.                    tbOrder.setMergeSplitType(0);
  27.                    tbOrder.setRefundStatus(TbOrder.REFUND_WAIT_BUYER_RETURN_GOODS);
  28.                    temp.setOrders(Arrays.asList(new TbOrder[]{tbOrder}));
  29.                    trades.add(temp);
  30.                }
  31.                return trades;
  32.            }
  33.        });
  34.        tradeService.__checkExcepHaltForSendGooods(user, taobaoIdsArray, tidsArray,
  35.                sysTidArray, SendGoodTag.TYPE.OFFLINE);
  36.    }
使用Anser时,如果你测试时,可以从外部传入参数调用到这个方法,那么就不需要使用any。如果这个mock方法调用的参数,是内部创建出来的,那么只能使用any。

Mockito单元测试-answer相关推荐

  1. JUnit与Mockito单元测试典型示例

    单元测试的重要性无需赘述,但单元测试也会遇到困难,其中之一就是如何创建依赖.试想我们常见的server端分层架构,数据访问层Dao,业务层,以及Web层,想要单元测试业务层,我们需要依赖Dao层提供数 ...

  2. mockito 单元测试_使用FizzBu​​zz和Mockito进行单元测试

    mockito 单元测试 我有时使用FizzBu​​zz向新手演示单元测试的基础. 尽管FizzBu​​zz确实是一个简单的问题,但它也可以用于演示更高级的单元测试技术,例如模拟 . FizzBu​​ ...

  3. mockito单元测试示例_Mockito模拟示例

    mockito单元测试示例 Mockito mocking framework provides different ways to mock a class. Let's look at diffe ...

  4. linux打桩数框架,Mockito 单元测试打桩神器

    last modified by coder4 , 2019/08/30 18:34:26 Mockito 单元测试打桩神器 单元测试 软件测试是软件质量保证的关健环节,代表了需求.设计和编码的最终检 ...

  5. 记录学习Mockito单元测试的坑——空指针异常

    记录学习Mockito单元测试的坑--空指针异常 情况一 mockito-all依赖和mockito-core依赖同时引用时,可能会报空指针异常 正确引用 <!--导入junit单元测试依赖-- ...

  6. mockito mock void方法_一文让你快速上手 Mockito 单元测试框架(上)

    作者|mghio 编辑|包包 前言  在计算机编程中,单元测试是一种软件测试方法,通过该方法可以测试源代码的各个单元功能是否适合使用.为代码编写单元测试有很多好处,包括可以及早的发现代码错误,促进更改 ...

  7. mockito mock void方法_一文让你快速上手 Mockito 单元测试框架

    前言 在计算机编程中,单元测试是一种软件测试方法,通过该方法可以测试源代码的各个单元功能是否适合使用.为代码编写单元测试有很多好处,包括可以及早的发现代码错误,促进更改,简化集成,方便代码重构以及许多 ...

  8. Mockito单元测试—verify

    1.校验方法是否调用 Mockito提供vertify关键字来实现校验方法是否被调用,具体调用如下例子: @Testpublic void update() throws Exception {boo ...

  9. 单元测试利器——手把手教你使用Mockito

    作者:京东零售 秦浩然 从你成为开发人员的那一天起,写单元测试终究是你逃不开的宿命!那开发人员为什么不喜欢写单元测试呢?究其原因,无外乎是依赖.依赖其他的服务.依赖运行的环境.等等,各种依赖都成为了我 ...

最新文章

  1. java增强for循环
  2. C#操作NPOI插件的HSSFWorkBook,常见的那些坑
  3. 阿里 Midway 正式发布 Serverless v1.0,研发提效 50%
  4. 【题解】 [HEOI2016]排序题解 (二分答案,线段树)
  5. FDS (Flex Data Services)
  6. Spring MVC DispatcherServlet介绍(2)
  7. java 可视化_可视化Java 9模块关系
  8. 和在c语言,?和:在C语言中的详解
  9. 14岁AI天才的钢铁之心
  10. 小女出世,暂停工作,全职照料大人小孩
  11. 强悍的 ubuntu —— ubuntu 与 windows 双系统的交互
  12. JavaScript_8_比较,条件语句
  13. make files touse cmd line to protect exe
  14. 【快速高斯模糊的实现】
  15. jsp 引入java类库报错_myeclipse中运行Jsp项目调用java,运行不了,报错说不能解析jsp中的类型,资源文件无法使用,求解,...
  16. Ubuntu 修改鼠标中键功能
  17. 深度学习相关的硬件配置
  18. 华盛顿大学华人团队进入微软Imagine Cup总决赛!
  19. appcms手机端点击按钮返回顶部
  20. Ubuntu 安装rar文件解压工具

热门文章

  1. Magisk模块开发指南
  2. mac下编译android源码避坑指南(新)
  3. Tensorflow新版Seq2Seq接口使用
  4. Java Exer0910_4 输入身高(厘米)体重(公斤)计算BMI,四舍五入保留两位小数
  5. 直播平台的数据库架构演变
  6. HSI、HSV、RGB、CMY、CMYK、HSL、HSB、Ycc、XYZ、Lab、YUV等颜色模型简介
  7. 写给大数据初级开发者或准备转行大数据的人
  8. Erlang和Elixir简介
  9. 我做的一个java简单文本编辑器代码
  10. java eclipse oxygen_Eclipse 安装(Oxygen版本)