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 使用的更多相关文章

  1. Junit mockito 测试Controller层方法有Pageable异常

    1.问题 在使用MockMVC+Mockito模拟Service层返回的时候,当我们在Controller层中参数方法调用有Pageable对象的时候,我们会发现,我们没办法生成一个Pageable的 ...

  2. Junit mockito解耦合测试

    Mock测试是单元测试的重要方法之一. 1.相关网址 官网:http://mockito.org/ 项目源码:https://github.com/mockito/mockito api:http:/ ...

  3. Android 单元测试(junit、mockito、robolectric)

    1.运用JUnit4 进行单元测试 首先在工程的 src 文件夹内创建 test 和 test/java 文件夹. 打开工程的 build.gradle(Module:app)文件,添加JUnit4依 ...

  4. Mockito Hello World

    Mockito Hello World 项目配置 IDE是Intellij IDEA,用gradle配置项目. 新建一个Java项目,gradle中需要有这个:   repositories { jc ...

  5. mockito使用心得

    前提:pom引用<dependency> <groupId>junit</groupId> <artifactId>junit</artifact ...

  6. Mock之easymock, powermock, and mockito

    easymock, powermock, and mockito Easymock Class Mocking Limitations To be coherent with interface mo ...

  7. 用Mockito mock普通的方法

    上面的例子是很理想化的状态,但是在实际的开发中,我们需要经常调用一些依赖特定环境的函数或者调用同事写的代码,而同事仅提供了接口.这个时候就需要利用Mockito来协助我们完成测试. 当然,你可以选择e ...

  8. mock测试框架Mockito

    无论是敏捷开发.持续交付,还是测试驱动开发(TDD)都把单元测试作为实现的基石.随着这些先进的编程开发模式日益深入人心,单元测试如今显得越来越重要了.在敏捷开发.持续交付中要求单元测试一定要快(不能访 ...

  9. Mockito自定义verify参数Matcher

    在TDD开发中,也许我们会遇见对一些重要的无返回值的行为测试,比如在用户的积分DB中增加用户的积分,这个行为对于我们的业务具有重要的价值,所以我们也希望能测试覆盖这部分业务价值.这个时候我们就得使用m ...

  10. Mockito学习资料

    官网:http://mockito.org/ https://dzone.com/refcardz/mockito

随机推荐

  1. Oracle操作XML各种场景介绍

    版权声明:凭栏处.潇潇雨歇. https://blog.csdn.net/IndexMan/article/details/28130961 近期在研究Oracle PLSQL中对于XML的系列操作. ...

  2. 建立DbLink 时报ORA-01017/ORA-02063分析及解决

    今天在11G的oracle数据库上创建DBlink连接10g的库时, 出现: ORA-01017: invalid username/password; logon denied ORA-02063: ...

  3. NOIP模拟 17.8.18

    NOIP模拟17.8.18 A.小菜一碟的背包[题目描述]Blice和阿强巴是好朋友但萌萌哒Blice不擅长数学,所以阿强巴给了她一些奶牛做练习阿强巴有 n头奶牛,每头奶牛每天可以产一定量的奶,同时也 ...

  4. POJ1655 Balancing Art

    Balancing Act Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 13865   Accepted: 5880 De ...

  5. python中字母的大小写转换

    1.   capitalize(): 首字母大写,其余全部小写 2.   upper() :全转换成大写 3.   lower(): 全转换成小写 4.   title() :标题首字大写,如  &q ...

  6. Hibernate的DetachedCriteria使用(含Criteria)转载

    https://www.cnblogs.com/deng-cc/p/6428599.html 1.背景了解:Hibernate的三种查询方式 Hibernate总的来说共有三种查询方式:HQL.QBC ...

  7. 19-2 from和modelform的用法和介绍

    一 form 1. form的作用 1. 生成HTML代码 2. 帮我们做数据有效性的校验 3. 保留上次输入内容,显示错误提示 2. form组件校验数据有效性   1. 内置的校验规则 1. re ...

  8. Directx11教程37 纹理映射(7)

    原文:Directx11教程37 纹理映射(7)     本章是在教程35.36的基础上来实现一个光照纹理结合的程序,就是把场景中旋转的cube加上纹理.    lighttex.vs中顶点的结构现在 ...

  9. python 代码中的类和对象

  10. Xici drop flower

    var xici_user_api = "http://www.xici.net/apps/wedding/?method=wedding.user.getusername&from ...