经过入门篇,可以编写出一个简单的测试用例。

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

  1. SpringBoot中使用JNnit4(入门篇)

    一.添加依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId> ...

  2. 【快学springboot】在springboot中写单元测试[Happyjava]

    前言 很多公司都有写单元测试的硬性要求,在提交代码的时候,如果单测通不过或者说单元测试各种覆盖率不达标,会被拒绝合并代码.写单元测试,也是保证代码质量的一种方式. junit单元测试 相信绝大多数的J ...

  3. 【快学springboot】在springboot中写单元测试

    前言 很多公司都有写单元测试的硬性要求,在提交代码的时候,如果单测通不过或者说单元测试各种覆盖率不达标,会被拒绝合并代码.写单元测试,也是保证代码质量的一种方式. junit单元测试 相信绝大多数的J ...

  4. SpringBoot中yaml配置对象

    转载请在页首注明作者与出处 一:前言 YAML可以代替传统的xx.properties文件,但是它支持声明map,数组,list,字符串,boolean值,数值,NULL,日期,基本满足开发过程中的所 ...

  5. 如何在SpringBoot中使用JSP ?但强烈不推荐,果断改Themeleaf吧

    做WEB项目,一定都用过JSP这个大牌.Spring MVC里面也可以很方便的将JSP与一个View关联起来,使用还是非常方便的.当你从一个传统的Spring MVC项目转入一个Spring Boot ...

  6. springboot中swaggerUI的使用

    demo地址:demo-swagger-springboot springboot中swaggerUI的使用 1.pom文件中添加swagger依赖 2.从github项目中下载swaggerUI 然 ...

  7. spring-boot+mybatis开发实战:如何在spring-boot中使用myabtis持久层框架

    前言: 本项目基于maven构建,使用mybatis-spring-boot作为spring-boot项目的持久层框架 spring-boot中使用mybatis持久层框架与原spring项目使用方式 ...

  8. 由浅入深学习springboot中使用redis

    很多时候,我们会在springboot中配置redis,但是就那么几个配置就配好了,没办法知道为什么,这里就详细的讲解一下 这里假设已经成功创建了一个springboot项目. redis连接工厂类 ...

  9. Springboot中使用AOP统一处理Web请求日志

    title: Springboot中使用AOP统一处理Web请求日志 date: 2017-04-26 16:30:48 tags: ['Spring Boot','AOP'] categories: ...

随机推荐

  1. Redis- 简单操作命令

    1.进入. 退出 redis-cli exit 2.五种类型: 字符串: 字符串基本操作: 设置: SET key value 获取: GET key 多重赋值: MSET k1 v1 k2 v2 . ...

  2. Python消息队列(RabbitMQ)

    RabbitMQ 即一个消息队列,主要是用来实现应用程序的异步和解耦,同时也能起到消息缓冲,消息分发的作用.可维护多个队列,可实现消息的一对一和广播等方式发送 RabbitMQ是一个开源的AMQP实现 ...

  3. C# 《编写高质量代码改善建议》整理&笔记 --(五)类型设计

    1.区分接口和抽象类的应用场合 区别: ①接口支持多继承,抽象类则不能. ②接口可以包含方法,属性,索引器,事件的签名,但不能有实现,抽象类则可以. ③接口在增加新方法后,所有的继承者都必须重构,否则 ...

  4. 机器学习——随机森林,RandomForestClassifier参数含义详解

    1.随机森林模型 clf = RandomForestClassifier(n_estimators=200, criterion='entropy', max_depth=4) rf_clf = c ...

  5. springcloud~配置中心实例搭建

    server端 build.gradle相关 dependencies { compile('org.springframework.cloud:spring-cloud-config-server' ...

  6. HandlerInterceptor拦截实现对PathVariable变量的读取

    Http请求拦截作用 拦截后可以修改请求体 拦截后可以作一些其它统一的操作 问题提出 对于很多时间需要拦截很多Http请求,然后去获取一些参数,这些参数可能是querystring串,也可能是路由上的 ...

  7. springboot~注册bean的方法

    spring在启动时会自己把bean(java组件)注册到ioc容器里,实现控制反转,在开发人员使用spring开发应用程序时,你是看不到new关键字的,所有对象都应该从容器里获得,它们的生命周期在放 ...

  8. 秋招已过,各大厂的面试题分享一波 附C++实现

    数据结构和算法是面试的一座大山,尤其去面试大厂更是必不可少!简单说明一下为啥喜欢考数据结构和算法,首先,算法有用也没用,如果是中小型企业的简单业务逻辑,可能用不到啥算法,但大厂一定会用到,都知道数据库 ...

  9. Asp.NetCore依赖注入和管道方式的异常处理及日志记录

    前言     在业务系统,异常处理是所有开发人员必须面对的问题,在一定程度上,异常处理的能力反映出开发者对业务的驾驭水平:本章将着重介绍如何在 WebApi 程序中对异常进行捕获,然后利用 Nlog ...

  10. word中如何只修改英文的颜色

    替换->更多->使用通配符,查找[a-zA-Z],替换为^&,字体选红色