博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Mockito 简单使用
阅读量:4494 次
发布时间:2019-06-08

本文共 2993 字,大约阅读时间需要 9 分钟。

有一个月没写博客了,以后再忙也要抽时间写啊。

目的

正常情况下,如果要对 UserService 中方法的测试,那么其依赖的 UserDao 也要可以调通,但是,UserDao 可能并不是直接到 DB 的,也可能到各种存储介质中,那么问题就复杂了,我们的目的仅仅是要测试 UserService 中的业务处理逻辑,UserDao 返回的结果并不重要

这种情况下,如果我们能模拟一个 UserDao 返回的结果来供 UserService 处理,就太好了

 

下面通过 Mockito 就能很简单的实现

实现

项目结构

User:

package com.zhengbin.service.test;/** * Created by ZhengBin on 2017/6/30. */public class User {    private Integer id;    private String name;    @Override    public String toString() {        return "User{" +                "id=" + id +                ", name='" + name + '\'' +                '}';    }    public Integer getId() {        return id;    }    public void setId(Integer id) {        this.id = id;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }}
User

UserDao:

package com.zhengbin.service.test;import java.util.List;/** * Created by ZhengBin on 2017/6/30. */public interface UserDao {    User getUser(int id);        List
getUsers(int id);}
View Code

UserDaoImpl:

package com.zhengbin.service.test;import java.util.ArrayList;import java.util.List;/** * Created by ZhengBin on 2017/6/30. */public class UserDaoImpl implements UserDao {    public User getUser(int id) {        User user = new User();        user.setId(id);        user.setName("zhengbin");        return user;    }    public List
getUsers(int id) { List
userList = new ArrayList
(); User user1 = new User(); user1.setId(1); user1.setName("zhengbin"); userList.add(user1); User user2 = new User(); user2.setId(2); user2.setName("zb"); userList.add(user2); return userList; }}
UserDao

UserService:

package com.zhengbin.service.test;/** * Created by ZhengBin on 2017/6/30. */public interface UserService {    User getUser(int id);}
View Code

UserServiceImpl:

package com.zhengbin.service.test;/** * Created by ZhengBin on 2017/6/30. */public class UserServiceImpl implements UserService {    private UserDao userDao;    public User getUser(int id) {        System.out.println("doing something");        return userDao.getUser(id);    }}
View Code

MockTest:

package com.zhengbin.service.test;import org.junit.Before;import org.junit.Test;import org.mockito.InjectMocks;import org.mockito.Mock;import org.mockito.Mockito;import org.mockito.MockitoAnnotations;/** * Created by ZhengBin on 2017/6/30. */public class MockTest {    @InjectMocks    private UserServiceImpl userService;    @Mock    private UserDao userDao;    @Before    public void setUp() {        MockitoAnnotations.initMocks(this);    }    @Test    public void testGetUser() {        int id = 1;        User user = new User();        user.setName("mock - zb");        user.setId(0);        Mockito.when(userDao.getUser(1)).thenReturn(user);        System.out.println(userService.getUser(id));    }}

 

转载于:https://www.cnblogs.com/zhengbin/p/7101095.html

你可能感兴趣的文章
复利计算v6.0--web版--软件工程
查看>>
jq 设置 css 多个样式的改变
查看>>
Myeclipse 与 MysqlSQL数据库连接报错-The Server time zone value 'XXXXX' 乱码 is unrecognized......
查看>>
最近有些堕落了~
查看>>
常用的linux系统命令汇总
查看>>
如何开发JAVA的GUI程序
查看>>
使用EnityFramework时,如何将指定字符串用作将连接到数据库的名称或者连接字符串名称...
查看>>
DISPOSE_ON_CLOSE 和 EXIT_ON_CLOSE 的区别
查看>>
es6学习--promise对象
查看>>
hdu1501 动态规划
查看>>
关于Microsoft app下同义词的整理
查看>>
EclipseADT编写单元测试代码的步骤
查看>>
Dart集合
查看>>
POJ 1988 Cube Stacking(并查集+路径压缩)
查看>>
黑马程序猿——JAVA高新技术——反射
查看>>
window.location.hash在firefox下中文自动转码为UTF-8问题
查看>>
Raspberry Pi 上使用GPU的OpenMax视频编码
查看>>
[LeetCode] Combinations 组合项
查看>>
95. Unique Binary Search Trees II
查看>>
js input框输入1位数字后自动跳到下一个input框聚焦
查看>>