SpringBoot中使用JNnit4(一)之Mockito的使用
经过入门篇,可以编写出一个简单的测试用例。
这篇讲的是BDDMockito的使用。
BDDMockito用于测试时进行打桩处理;通过它可以指定某个类的某个方法在什么情况下返回什么样的值。
在单元测试时,如果遇到复杂的业务场景,使用多个类时,就需要用到BDDMockito。
需要打桩的对象,只能是@Mock注解的方式
package xx.xx.test; import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.web.WebAppConfiguration; @RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest
@WebAppConfiguration
public class ApplicationTests { @Before
public void init(){
System.out.println("******测试开始");
} @After
public void end(){
System.out.println("******测试结束");
} @BeforeClass
public static void initClass(){
System.out.println("******测试开始初始化");
} @AfterClass
public static void endClass(){
System.out.println("******测试结束初始化");
}
}
package xx.xx.test; import org.mockito.BDDMockito;
import org.mockito.Mock;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.mock.mockito.MockBean; import xx.xx.test.InfoService;
import xx.xx.test.UserService; public class Test extends ApplicationTests{ @Mock
private UserService userService;
@Autowired
private InfoService infoService; @org.junit.Test
public void add(){
int i = userService.add("王五");
System.out.println("Test.add.i:" + i);
int j = infoService.update("张三");
System.out.println("Test.add.j:" + j);
} @Override
public void init(){
BDDMockito.given(userService.add("王五")).willReturn(9);
BDDMockito.given(userService.add("")).willReturn(0);
BDDMockito.given(userService.add(null)).willThrow(NullPointerException.class);
System.out.println("******重写测试开始");
}
}
package xx.xx.test;
public interface InfoService {
Integer update(String name);
}
package xx.xx.test.impl;
import org.springframework.stereotype.Service;
import xx.xx.test.InfoService;
@Service("infoService")
public class InfoServiceImpl implements InfoService{
public Integer update(String name){
return 1;
}
}
package xx.xx.test;
public interface UserService {
Integer add(String name);
}
打印结果:
******测试开始
******重写测试开始
Test.add.i:9
Test.add.j:1
******测试结束
******测试结束初始化
BDDMockito有哪些使用场景呢?
1、可以指定打桩对象的返回值。
1.1、使用given:
BDDMockito.given(userService.add("王五")).willReturn(9);
BDDMockito.given(userService.add("")).willReturn(0);
BDDMockito.given(userService.add(null)).willThrow(NullPointerException.class);
上面代码的意思是:
当传入的参数是"王五"的时候,返回值是9。
当传入的参数是""时,返回的值是0。
当传入的参数是null时,抛出NullPointerException异常。
SpringBoot中使用JNnit4(一)之Mockito的使用的更多相关文章
- SpringBoot中使用JNnit4(入门篇)
一.添加依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId> ...
- 【快学springboot】在springboot中写单元测试[Happyjava]
前言 很多公司都有写单元测试的硬性要求,在提交代码的时候,如果单测通不过或者说单元测试各种覆盖率不达标,会被拒绝合并代码.写单元测试,也是保证代码质量的一种方式. junit单元测试 相信绝大多数的J ...
- 【快学springboot】在springboot中写单元测试
前言 很多公司都有写单元测试的硬性要求,在提交代码的时候,如果单测通不过或者说单元测试各种覆盖率不达标,会被拒绝合并代码.写单元测试,也是保证代码质量的一种方式. junit单元测试 相信绝大多数的J ...
- SpringBoot中yaml配置对象
转载请在页首注明作者与出处 一:前言 YAML可以代替传统的xx.properties文件,但是它支持声明map,数组,list,字符串,boolean值,数值,NULL,日期,基本满足开发过程中的所 ...
- 如何在SpringBoot中使用JSP ?但强烈不推荐,果断改Themeleaf吧
做WEB项目,一定都用过JSP这个大牌.Spring MVC里面也可以很方便的将JSP与一个View关联起来,使用还是非常方便的.当你从一个传统的Spring MVC项目转入一个Spring Boot ...
- springboot中swaggerUI的使用
demo地址:demo-swagger-springboot springboot中swaggerUI的使用 1.pom文件中添加swagger依赖 2.从github项目中下载swaggerUI 然 ...
- spring-boot+mybatis开发实战:如何在spring-boot中使用myabtis持久层框架
前言: 本项目基于maven构建,使用mybatis-spring-boot作为spring-boot项目的持久层框架 spring-boot中使用mybatis持久层框架与原spring项目使用方式 ...
- 由浅入深学习springboot中使用redis
很多时候,我们会在springboot中配置redis,但是就那么几个配置就配好了,没办法知道为什么,这里就详细的讲解一下 这里假设已经成功创建了一个springboot项目. redis连接工厂类 ...
- Springboot中使用AOP统一处理Web请求日志
title: Springboot中使用AOP统一处理Web请求日志 date: 2017-04-26 16:30:48 tags: ['Spring Boot','AOP'] categories: ...
随机推荐
- 解决WIN7启动DHCP服务报1075错误办法
昨天电脑装了Microsoft .NET Framework后,今天一开电脑连不上网了,找了半天问题发现电脑的DHCP服务没有开启,然后在服务中开发DHCP提示下面的内容 原文地址:代码汇个人博客 h ...
- centos下python3.6安装uwsgi失败。
报错信息(省略大部分): plugins/python/uwsgi_python.h::: fatal error: Python.h: No such file or directory #incl ...
- Android框架式编程之RxJava(一):HelloWorld
Hello World 源码: import android.graphics.Bitmap; import android.graphics.BitmapFactory; import androi ...
- C# 4.0 的 Visual Studio 2010 示例
C# 4.0 的 Visual Studio 2010 示例 我们将 C# 示例分为两种不同的类别: 语言示例 LINQ 示例 语言示例 语言示例帮助您熟悉各种 C# 语言功能.这些示例包含在 Lan ...
- Python爬虫10-页面解析数据提取思路方法与简单正则应用
GitHub代码练习地址:正则1:https://github.com/Neo-ML/PythonPractice/blob/master/SpiderPrac15_RE1.py 正则2:match. ...
- 3.Git基础-查看当前文件状态、跟踪新文件、暂存文件、忽略文件、提交更新、移除文件、移动文件
1.检查当前文件状态 -- git status git diff git diff --staged git status :我们可以使用 git status 来查看文件所处的状态.当运 ...
- perl学习笔记--搭建开发环境
windows下perl开发环境搭建 perl下载地址:http://www.activestate.com/developer-tools 各个插件的安装方法:(通过代理上网的方法) 方法一:pad ...
- linux日常服务器部署一些命令使用
今天公司的开发环境的linux服务器,我要了一个账号来玩玩 拿到账号和密码,我就用xshell登陆上去 1.查看已挂载的分区列表 df -h 显示已经挂载的分区列表 2.查看目录中的文件 ls 查看目 ...
- .NET Core微服务之基于MassTransit实现数据最终一致性(Part 2)
Tip: 此篇已加入.NET Core微服务基础系列文章索引 一.案例结构与说明 在上一篇中,我们了解了MassTransit这个开源组件的基本用法,这一篇我们结合一个小案例来了解在ASP.NET C ...
- 让VS2019支持.NET Core WinForms和WPF设计器的临时办法(比微软给出的办法更方便)
参考以下代码片段,给项目添加NET Framework目标框架,切换到NET472运行时重新生成项目,然后打开设计器界面. 如果遇到设计器报错,尝试以NET472运行时为目标重新生成项目,并重新打开V ...