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
随机推荐
- console 中的格式化打印(占位符),和样式定义
格式化打印 Gecko 9.0 (Firefox 9.0 / Thunderbird 9.0 / SeaMonkey 2.6) 首次发布对string substitutions的支持.你可以在传递给 ...
- POJ 1845 (洛谷 :题目待添加)Sumdiv
约数和 题目描述 给出a和b求a^b的约数和. 输入格式: 一行两个数a,b. 输出格式: 一个数表示结果对 9901 的模. Input 2 3 Output 15 SB的思路: 这是一道典型的数论 ...
- PHPCMS快速建站系列之getcache()的用法
/** * 读取缓存,默认为文件缓存,不加载缓存配置. * @param string $name 缓存名称 * @param $filepath 数据路径(模块名称) caches/cache_$f ...
- word之图表目录中点号位置提升3磅
- [C#] 使用WebSocket进行通讯
客户端 客户端很简单 string url = "ws://localhost:24900/" + "test.ashx"; try { System.Net. ...
- SPSS统计基础-均值功能的使用
SPSS统计基础-均值功能的使用 均值过程计算一个或多个自变量类别中因变量的子组均值和相关的单变量统计.您也可以获得单因素方差分析.eta 和线性相关检验. 统计量.合计.个案数.均值.中位数.组内中 ...
- C++:static类
static自我理解 static使得数据成员或者函数生命周期为整个文件所在程序的生命周期, 在C中还可以用它避免被其它文件使用为外部成员 static类 明确:类的静态数据成员它被所有类对象共享,但 ...
- parkingLot
一个支付宝停车支付生活号前端页面 //index.html //自定义键盘 <!DOCTYPE html> <html> <head> <meta chars ...
- @codeforces - 715E@ Complete the Permutations
目录 @description@ @solution@ @accepted code@ @details@ @description@ 给定两个排列 p, q,他们中的有些位置被替换成了 0. 两个排 ...
- Oracle日期
oracle 日期格式 to_date("要转换的字符串","转换的格式") 两个参数的格式必须匹配,否则会报错. 即按照第二个参数的格式解释第一个参数. ...