首页 > 其他分享 >Mockito When/Then常见用法

Mockito When/Then常见用法

时间:2023-12-07 19:00:12浏览次数:34  
标签:MyList when Mockito When 用法 add listMock class

Mockito When/Then常见用法

该系列文章翻译自https://www.baeldung.com/mockito-series

接下来我们将以MyList类为例进行介绍

public class MyList extends AbstractList<String> {
    @Override
    public String get(final int index) {
        return null;
    }
    @Override
    public int size() {
        return 1;
    }
}

When/Then常见用法常见用法

1.方法一:when().thenReturn()模拟方法的返回

MyList listMock = Mockito.mock(MyList.class);
when(listMock.add(anyString())).thenReturn(false);
boolean added = listMock.add(randomAlphabetic(6));
assertThat(added, is(false));

2.方法二:doReturn().when()模拟方法的返回

MyList listMock = Mockito.mock(MyList.class);
doReturn(false).when(listMock).add(anyString());
boolean added = listMock.add(randomAlphabetic(6));
assertThat(added, is(false));

3.when().thenThrow()模拟异常(方法返回类型非void)

@Test(expected = IllegalStateException.class)
public void givenMethodIsConfiguredToThrowException_whenCallingMethod_thenExceptionIsThrown() {
    MyList listMock = Mockito.mock(MyList.class);
    when(listMock.add(anyString())).thenThrow(IllegalStateException.class);
    listMock.add(randomAlphabetic(6));
}

4.doThrow().when()模拟异常(方法返回类型为void)

MyList listMock = Mockito.mock(MyList.class);
doThrow(NullPointerException.class).when(listMock).clear();
listMock.clear();

5.模拟方法的多次调用

在下面的例子中,第二次调用add方法会抛出IllegalStateException

MyList listMock = Mockito.mock(MyList.class);
when(listMock.add(anyString()))
  .thenReturn(false)
  .thenThrow(IllegalStateException.class);
listMock.add(randomAlphabetic(6));
listMock.add(randomAlphabetic(6)); // will throw the exception

6.spy对象

MyList instance = new MyList();
MyList spy = Mockito.spy(instance);
doThrow(NullPointerException.class).when(spy).size();
spy.size(); // will throw the exception

7.使用thenCallRealMethod()调用mock对象的真实方法

MyList listMock = Mockito.mock(MyList.class);
when(listMock.size()).thenCallRealMethod();
assertThat(listMock.size(), equalTo(1));

8.doAnswer().when()设置默认返回

MyList listMock = Mockito.mock(MyList.class);
doAnswer(invocation -> "Always the same").when(listMock).get(anyInt());
String element = listMock.get(1);
assertThat(element, is(equalTo("Always the same")));
原文链接:https://www.jianshu.com/p/41db2a57f14d

标签:MyList,when,Mockito,When,用法,add,listMock,class
From: https://www.cnblogs.com/sunny3158/p/17883721.html

相关文章

  • Java Mockito 快速入门指南 Mock是指使用Mockito创建的模拟对象,它模拟真实对象的行为,
    JavaMockito快速入门指南Mock是指使用Mockito创建的模拟对象,它模拟真实对象的行为,用于替代真实对象的依赖项,以便进行独立的单元测试在软件开发中,单元测试对于确保代码的正确性和可靠性至关重要。Mockito是一个强大的Java测试框架,它提供了丰富的功能和方法,使得编写模拟测试变得......
  • 转:ROW_NUMBER() OVER函数的基本用法
    ROW_NUMBER()OVER函数的基本用法 分组后排序    在oracle中分组倒叙排序,取出每一组的第一个值,如何通过ROW_NUMBER()OVER实现 ChatGPTChatGPT在Oracle中,你可以使用ROW_NUMBER()窗口函数结合PARTITIONBY和ORDERBY子句来实现......
  • MyBatis的10种高级用法
    目录用来循环容器的标签forEach,查看例子concat模糊查询choose(when,otherwise)标签selectKey标签if标签if+where的条件判断if+set实现修改语句if+trim代替where/set标签foreach用来循环容器的标签forEachforeach元素的属性主要有item,index,collection,open,sep......
  • CMC-ORACLE-函數row_number() over(partition by )函数用法
    row_number()over(partitionby)函数用法row_number()over(partitionby),作为oracle常用的分析函数,身为数据开发时必须要掌握的。不过一段时间不用,难免会有些忘记,今天整理一下一些场景下的用法。现有表(test_rownumber)有如下数据:RUSER(用户名)RID(用户编号)RSAL(用户消费)RD......
  • python assert用法
    python中assert用法。具体分析如下1、assert语句用来声明某个条件是真的。2、如果你非常确信某个你使用的列表中至少有一个元素,而你想要检验这一点,并且在它非真的时候引发一个错误,那么assert语句是应用在这种情形下的理想语句。3、当assert语句失败的时候,会引发一AssertionEr......
  • python中for循环用法
    1、在python中完整的for语法如下#for变量in集合:#循环代码#else:#没有通过的break退出循环,结束后会执行代码2、应用场景在迭代变量嵌套的数据类型时,列表【数组】中包括多个字典【键值对存放的值:用{key:value}】需求:要判断某一个字典中是否存在......
  • C++中的const用法
    一、修饰普通变量:constdoublePI=3.14159;constinta=10;//这些C++中的内置类型被const修饰时,其值不可被随意更改二、修饰一个指针(即指针对应的值不可修改):但是指针作为一个变量,其可指向其他位置,只是无法通过指针来改变其指向的对象的值inta=10;intb=20;constint*p......
  • Django开发中csrf 的作用和含义以及用法
    在Django中,CSRF指的是跨站请求伪造(Cross-SiteRequestForgery)。这是一种网络入侵方法,入侵者诱使已认证的用户在他们不知情的情况下发送伪造的请求,比如在用户登录某个受信任网站后,在另一个标签页中访问恶意网站,恶意网站上的脚本可以发送请求到受信任网站,而这个请求会携带用户的......
  • Mockito
    Mockito1.简介Mockito是一种JavaMock框架,主要是用来做Mock测试,它可以模拟任何Spring管理的Bean、模拟方法的返回值、模拟抛出异常等等用于快速创建和配置mock对象。通过创建外部依赖的Mock对象,然后将此Mock对象注入到测试类中,简化有外部依赖的类的测试。我们......
  • Extraneous children found when component already has explicitly named default sl
    下述代码会报错:Extraneouschildrenfoundwhencomponentalreadyhasexplicitlynameddefaultslot.Thesechildrenwillbeignored.<el-table-columnprop="goodsState"label="商品状态"width="120"/><template#default="......