Mockito 使用
1. 算术测试类
package com.smart.test.mockito;
public interface Calculator {
public int add(int a, int b);
}
package com.smart.test.mockito;
public class CalculatorImpl implements Calculator {
@Override
public int add(int a, int b) {
System.out.println("add(" + a + ", " + b + ") = " + (a + b));
return a + b;
}
public int minus(int a, int b) {
System.out.println("minus(" + a + ", " + b + ") = " + (a - b));
return a - b;
}
}
2. 用户测试类
package com.smart.test.mockito;
public class User {
private String name;
private String password;
public User() {}
public User(String name, String password) {
this.name = name;
this.password = password;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
package com.smart.test.mockito;
public interface UserService {
public User findUserByUserName(String name);
public boolean hasMatchUser(String name, String password);
public void registerUser(User user);
}
package com.smart.test.mockito;
public class UserServiceImpl implements UserService {
@Override
public User findUserByUserName(String name) {
// TODO Auto-generated method stub
return null;
}
@Override
public boolean hasMatchUser(String name, String password) {
// TODO Auto-generated method stub
return false;
}
@Override
public void registerUser(User user) {
// TODO Auto-generated method stub
}
}
3. 测试驱动类
package com.smart.test.mockito; import static org.mockito.Mockito.*;
import static junit.framework.Assert.*;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations; public class MockitoSampleTest { CalculatorImpl mockCalculatorImpl = mock(CalculatorImpl.class); @Mock
UserService mockUserService;
@Mock
UserServiceImpl mockUserServiceImpl;
@Mock
User mockUser; @Before
public void initMocks() {
/*
* 初始化当前测试类的所有@Mock注解模拟对象
*/
MockitoAnnotations.initMocks(this);
} @Test
public void testMockCalculator() { when(mockCalculatorImpl.add(3, 4)).thenReturn(6);
int c = mockCalculatorImpl.add(3, 4);
assertEquals(c, 7); doReturn(2).when(mockCalculatorImpl).minus(3, 1);
int d = mockCalculatorImpl.minus(3, 1);
assertEquals(d, 2);
} @Test
public void testMockUserService() {
/*
* 对 public User findUserByUserName(String name) 方法设定返回值
* 模拟入参“tom”, 返回一个new User("tom", "1234")对象
*/
when(mockUserService.findUserByUserName("tom")).thenReturn(new User("tom", "1234")); /*
* 对 public boolean hasMatchUser(String name, String password) 方法设定返回值
* 模拟入参hasMatchUser("asn", "1234") 返回 true
*/
doReturn(true).when(mockUserService).hasMatchUser("asn", "1234"); /*
* 对 public void registerUser(User user) 方法设定返回值
* 模拟入参 new User("John", "1234")能够顺利执行,返回值类型为void
*/
doNothing().when(mockUserService).registerUser(new User("John", "1234")); //调用测试目标方法
User user = mockUserService.findUserByUserName("tom");
boolean isMatch = mockUserService.hasMatchUser("asn", "1234");
mockUserService.registerUser(new User("John", "1234")); //断言结果
System.out.println(user.getName() + ", " + user.getPassword());
System.out.println(isMatch);
} @Test
public void testMockUser() { /*
* 对。。。方法进行模拟测试
* public String getName() {
return name;
}
* 设定模拟对象mockUser上getName()方法的返回值为“tom”
*/
when(mockUser.getName()).thenReturn("tom"); assertEquals(mockUser.getName(), "tom");
}
}
Mockito 使用的更多相关文章
- Junit mockito 测试Controller层方法有Pageable异常
1.问题 在使用MockMVC+Mockito模拟Service层返回的时候,当我们在Controller层中参数方法调用有Pageable对象的时候,我们会发现,我们没办法生成一个Pageable的 ...
- Junit mockito解耦合测试
Mock测试是单元测试的重要方法之一. 1.相关网址 官网:http://mockito.org/ 项目源码:https://github.com/mockito/mockito api:http:/ ...
- Android 单元测试(junit、mockito、robolectric)
1.运用JUnit4 进行单元测试 首先在工程的 src 文件夹内创建 test 和 test/java 文件夹. 打开工程的 build.gradle(Module:app)文件,添加JUnit4依 ...
- Mockito Hello World
Mockito Hello World 项目配置 IDE是Intellij IDEA,用gradle配置项目. 新建一个Java项目,gradle中需要有这个: repositories { jc ...
- mockito使用心得
前提:pom引用<dependency> <groupId>junit</groupId> <artifactId>junit</artifact ...
- Mock之easymock, powermock, and mockito
easymock, powermock, and mockito Easymock Class Mocking Limitations To be coherent with interface mo ...
- 用Mockito mock普通的方法
上面的例子是很理想化的状态,但是在实际的开发中,我们需要经常调用一些依赖特定环境的函数或者调用同事写的代码,而同事仅提供了接口.这个时候就需要利用Mockito来协助我们完成测试. 当然,你可以选择e ...
- mock测试框架Mockito
无论是敏捷开发.持续交付,还是测试驱动开发(TDD)都把单元测试作为实现的基石.随着这些先进的编程开发模式日益深入人心,单元测试如今显得越来越重要了.在敏捷开发.持续交付中要求单元测试一定要快(不能访 ...
- Mockito自定义verify参数Matcher
在TDD开发中,也许我们会遇见对一些重要的无返回值的行为测试,比如在用户的积分DB中增加用户的积分,这个行为对于我们的业务具有重要的价值,所以我们也希望能测试覆盖这部分业务价值.这个时候我们就得使用m ...
- Mockito学习资料
官网:http://mockito.org/ https://dzone.com/refcardz/mockito
随机推荐
- 动态生成能够局部刷新的验证码【AJAX技术】---看了不懂赔你钱
在开发JavaWeb应用时,动态生成能够局部刷新的验证码是一项必须的功能,在这里我们将会详细的讲解如何实现这一功能. 一.涉及技术 该功能需要用到AJAX异步传输技术,这样能保证在点击"看不 ...
- typroa 和markdown基操
目录 标题 一级标题 二级标题 字体 图片 来插入图片,如在同意文件夹上,可直接加图片名 数学公式 编辑表格 标题 一级标题 二级标题 三级标题 无序标题 *加空格,无序标题 也可以使用ctrl = ...
- JavaScript中的this关键字的几种用法
JS 里的 this 在 function 内部被创建 指向调用时所在函数所绑定的对象(拗口) this 不能被赋值,但可以被 call/apply 改变 1. this 和构造函数 function ...
- AGC029 E: Wandering TKHS
E: Wandering TKHS - AtCoder Grand Contest 029 | AtCoder 分类讨论好题(也不太算分类讨论) 方法:感受过程手玩,考虑能不能提前预算一些东西,或者 ...
- 用Sketch和PaintCode快速得到绘制代码
http://www.cocoachina.com/ios/20150901/13155.html 作者:codeGlider 授权本站转载. 在我的上一篇文章中 swift10分钟实现炫酷的导航控制 ...
- 在dva框架和create-react-app创建出来的框架中修饰器语法与按需加载引入antd分别配置
按需加载需要的包 babel-plugin-import 装饰器语法需要的包 @babel/plugin-proposal-decorators dva框架 将.webpackrc 改成. ...
- 从零学React Native之07View
View 组件是React Native最基本的组件.绝大部分其他React Native 组件. View组件的颜色和边框 backgroundColor 键用来指定颜色. RN 0.19版本开始, ...
- CAD专用卸载修复工具,一键完全彻底卸载删除CAD软件的专用卸载工具
Autodesk CAD卸载工具(AUTO Uninstaller)是专门为了针对Autodesk CAD软件卸载不干净而导致CAD安装失败问题进行研发的Autodesk CAD一键卸载工具.现在虽然 ...
- android service中stub作用是什么?
AIDL(android 接口描述语言)是一个IDL语言,它可以生成一段代码,可以使在一个android设备上运行的两个进程使用内部通信进程进行交互.如果你需要在一个进程中(例如:在一个Activit ...
- ImportError: No module named tensorflow.compat.v1 忽略已经安装的某个包版本 忽略已安装版本
ImportError: No module named tensorflow.compat.v1 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声 ...