SpringBoot中使用JNnit4(一)之Mockito的使用

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

这篇讲的是BDDMockito的使用。

BDDMockito用于测试时进行打桩处理;通过它可以指定某个类的某个方法在什么情况下返回什么样的值。

在单元测试时,如果遇到复杂的业务场景,使用多个类时,就需要用到BDDMockito。

需要打桩的对象,只能是@Mock注解的方式

1package xx.xx.test; 2 3import org.junit.After; 4import org.junit.AfterClass; 5import org.junit.Before; 6import org.junit.BeforeClass; 7import org.junit.runner.RunWith; 8import org.springframework.boot.test.context.SpringBootTest; 9import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; 10import org.springframework.test.context.web.WebAppConfiguration; 11 12@RunWith(SpringJUnit4ClassRunner.class) 13@SpringBootTest 14@WebAppConfiguration 15public class ApplicationTests { 16 17 @Before 18 public void init(){ 19 System.out.println("******测试开始"); 20 } 21 22 @After 23 public void end(){ 24 System.out.println("******测试结束"); 25 } 26 27 @BeforeClass 28 public static void initClass(){ 29 System.out.println("******测试开始初始化"); 30 } 31 32 @AfterClass 33 public static void endClass(){ 34 System.out.println("******测试结束初始化"); 35 } 36} 37 38package xx.xx.test; 39 40import org.mockito.BDDMockito; 41import org.mockito.Mock; 42import org.springframework.beans.factory.annotation.Autowired; 43import org.springframework.boot.test.mock.mockito.MockBean; 44 45import xx.xx.test.InfoService; 46import xx.xx.test.UserService; 47 48public class Test extends ApplicationTests{ 49 50 @Mock 51 private UserService userService; 52 @Autowired 53 private InfoService infoService; 54 55 @org.junit.Test 56 public void add(){ 57 int i = userService.add("王五"); 58 System.out.println("Test.add.i:" + i); 59 int j = infoService.update("张三"); 60 System.out.println("Test.add.j:" + j); 61 } 62 63 @Override 64 public void init(){ 65 BDDMockito.given(userService.add("王五")).willReturn(9); 66 BDDMockito.given(userService.add("")).willReturn(0); 67 BDDMockito.given(userService.add(null)).willThrow(NullPointerException.class); 68 System.out.println("******重写测试开始"); 69 } 70} 71 72package xx.xx.test; 73 74public interface InfoService { 75 76 Integer update(String name); 77 78} 79 80package xx.xx.test.impl; 81 82import org.springframework.stereotype.Service; 83 84import xx.xx.test.InfoService; 85 86@Service("infoService") 87public class InfoServiceImpl implements InfoService{ 88 89 public Integer update(String name){ 90 return 1; 91 } 92 93} 94 95package xx.xx.test; 96 97public interface UserService { 98 99 Integer add(String name); 100 101}

打印结果:

******测试开始

******重写测试开始
Test.add.i:9
Test.add.j:1
******测试结束
******测试结束初始化

BDDMockito有哪些使用场景呢?

1、可以指定打桩对象的返回值。

  1.1、使用given:

1BDDMockito.given(userService.add("王五")).willReturn(9); 2BDDMockito.given(userService.add("")).willReturn(0); BDDMockito.given(userService.add(null)).willThrow(NullPointerException.class);

    上面代码的意思是:

      当传入的参数是"王五"的时候,返回值是9。

      当传入的参数是""时,返回的值是0。

      当传入的参数是null时,抛出NullPointerException异常。

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

Java日期时间API系列31

  时间戳是指格林威治时间1970年01月01日00时00分00秒起至现在的总毫秒数,是所有时间的基础,其他时间可以通过时间戳转换得到。Java中本来已经有相关获取时间戳的方法,Java8后增加新的类Instant等专用于处理时间戳问题。 1获取时间戳的方法和性能对比1.1获取时间戳方法Java8以前

java8新特性

Stream将List转换为Map,使用Collectors.toMap方法进行转换背景:User类,类中分别有id,name,age三个属性。List集合,userList,存储User对象1、指定keyvalue,value是对象中的某个属性值。 Map<Integer,StringuserMap1userList.str