Mockito的使用
来源:互联网 发布:软件商城下载 编辑:程序博客网 时间:2024/05/18 01:21
1. Mockito简介
调用mock对象的方法时,不会执行真实的方法,而是返回类型的默认值,如object返回null, int返回0等,否则通过指定when(方法).thenReturn(value)来指定方法的返回值。同时mock对象可以进行跟踪,使用verify方法看是否已经被调用过。而spy对象,默认会执行真实方法,返回值可以通过when.thenReturn进行覆盖。可见mock只要避开了执行一些方法,直接返回指定的值,方便做其他测试。
2. 使用实例
在maven中引入两个依赖:
<dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency> <!-- https://mvnrepository.com/artifact/org.mockito/mockito-core --> <dependency> <groupId>org.mockito</groupId> <artifactId>mockito-core</artifactId> <version>2.7.22</version> <scope>test</scope> </dependency>
定义User对象:
package com.jessin.practice.bean;import com.fasterxml.jackson.annotation.JsonFormat;import com.fasterxml.jackson.core.JsonProcessingException;import com.fasterxml.jackson.databind.ObjectMapper;import org.springframework.beans.factory.InitializingBean;import org.springframework.beans.factory.annotation.Value;import org.springframework.stereotype.Component;import java.util.Date;public class User implements InitializingBean{ private int id; private Date birthday; private String name; public User(){ } public int getId() { id = 100; System.out.println("id : " + id); return id; } public void setId(int id) { this.id = id; } public Date getBirthday() { return birthday; } public void setBirthday(Date birthday) { this.birthday = birthday; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String toString(){ ObjectMapper objectMapper = new ObjectMapper(); try { return objectMapper.writeValueAsString(this); } catch (JsonProcessingException e) { e.printStackTrace(); } return ""; } public void afterPropertiesSet() throws Exception { System.out.println(toString()); }}
2.1 mock默认值
package com.jessin;import com.jessin.practice.bean.User;import org.junit.Test;import static org.junit.Assert.assertEquals;import static org.mockito.Mockito.*;/** * Created by zexin.guo on 17-8-20. */public class UserTest { @Test public void testMockClass(){ User mockUser = mock(User.class); // mock对象不设置返回时object默认返回null,不执行真实方法 assertEquals("tom", mockUser.getName()); }}
结果:
2.2 mock指定返回值
package com.jessin;import com.jessin.practice.bean.User;import org.junit.Test;import static org.junit.Assert.assertEquals;import static org.mockito.Mockito.*;/** * Created by zexin.guo on 17-8-20. */public class UserTest { @Test public void testMockClass(){ User mockUser = mock(User.class); // 指定返回tom when(mockUser.getName()).thenReturn("tom"); // junit测试失败,期待返回tony assertEquals("tony", mockUser.getName()); }}
结果:
2.3 verify验证方法调用及调用次数
定义一个Friend类:
package com.jessin.practice.bean;import java.util.List;/** * Created by zexin.guo on 17-8-21. */public class Friend { private String userName; private List<User> myFriends; public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public List<User> getMyFriends() { return myFriends; } public void setMyFriends(List<User> myFriends) { this.myFriends = myFriends; } public void printMyFriends(){ for(User user : myFriends){ System.out.println(user.getName()); } }}
结果:
@Test public void testVerify(){ Friend friend = new Friend(); friend.setMyFriends(new ArrayList<User>()); User mockUser = mock(User.class); // 如果不设置,返回null when(mockUser.getName()).thenReturn("jessin"); friend.getMyFriends().add(mockUser); // 照常打印名字 friend.printMyFriends(); // 验证该方法被调用一次 verify(mockUser).getName(); }
结果:
2.4 spy调用真实方法
package com.jessin;import com.jessin.practice.bean.User;import org.junit.Test;import static org.junit.Assert.assertEquals;import static org.mockito.Mockito.*;/** * Created by zexin.guo on 17-8-20. */public class UserTest { @Test public void testMockClass(){ User mockUser = spy(User.class); // 指定返回10,原本返回的100被覆盖了 when(mockUser.getId()).thenReturn(10); // 测试通过 assertEquals(10, mockUser.getId()); }}
结果:
阅读全文
0 0
- Mockito的使用笔记
- Mockito的使用笔记
- Mockito的使用
- Mockito的使用一
- Mockito的使用 二
- Mockito的使用
- Mockito框架的使用
- Mock以及Mockito的使用
- Mock以及Mockito的使用
- Mock以及Mockito的使用
- PowerMock与Mockito的使用
- Android单元测试-Mockito的使用
- Mockito使用
- Mockito使用
- Mockito使用
- Mockito使用
- Mockito 使用
- Mockito单元测试-注解的详细使用
- 解决Pycharm里远程调试缺乏DISPLAY环境变量的TkAgg报错
- 剑指offer 08 旋转数组的最小数字
- 转载CSDN博客
- 使用生产者消费者解决海量数据的处理与相关优化
- QUICKSORT OPINION
- Mockito的使用
- java泛型(一)、泛型的基本介绍和使用
- Harris角点检测实现详解
- Arduino智能小车——测试篇
- 使用GROUP BY得到 极端的记录
- 爬虫学习(三) Scrapy框架入门与豆瓣电影爬虫
- RILD
- 计蒜客-跳跃游戏(贪心)
- react环境搭建