在上一篇,项目基本实现了Spring Boot对Mybatis的整合。这篇文章使用Mockito对项目进行测试。

1、使用postmat测试;

2、编写单元测试类,使用mockito进行测试;

3、使用idea内置工具进行测试

运行AicodeBgmsApplication.java,启动项目后,可以采用如下方式对接口进行测试。

一、使用postman进行测试

如上图所示进行测试,其他接口请自行测试。

二、编写单元测试类进行测试

这里使用Idea辅助我们创建单元测试类

在要测试的类,如:UserInfoController.java类中点击右键,再点击Go To,再点击Test,如下图所示:

或者点击菜单上的Navigate,然后点击Test,选择Create New Test...

然后进入下面界面,如下:

确定要测试的类和包路径,把编写单元测试的方法都选中,然后点击OK。单元测试类即可生成。

编写的测试代码如下:UserInfoControllerTest.java


  1. package com.aicode.bgms.controller;
  2. import org.junit.After;
  3. import org.junit.Before;
  4. import org.junit.Test;
  5. import org.junit.runner.RunWith;
  6. import org.springframework.beans.factory.annotation.Autowired;
  7. import org.springframework.boot.test.context.SpringBootTest;
  8. import org.springframework.test.context.junit4.SpringRunner;
  9. import org.springframework.test.web.servlet.MockMvc;
  10. import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
  11. import org.springframework.test.web.servlet.setup.MockMvcBuilders;
  12. import org.springframework.transaction.annotation.Transactional;
  13. import org.springframework.util.LinkedMultiValueMap;
  14. import org.springframework.util.MultiValueMap;
  15. import org.springframework.web.context.WebApplicationContext;
  16. import static org.junit.Assert.*;
  17. @RunWith(SpringRunner.class)
  18. @Transactional
  19. @SpringBootTest
  20. public class UserInfoControllerTest {
  21. private MockMvc mockMvc;
  22. @Autowired
  23. private WebApplicationContext wac;
  24. @Before
  25. public void setUp() throws Exception {
  26. this.mockMvc = MockMvcBuilders.webAppContextSetup(this.wac).build();
  27. }
  28. @After
  29. public void tearDown() throws Exception {
  30. }
  31. @Test
  32. public void list() throws Exception {
  33. String mvcResult= mockMvc.perform(MockMvcRequestBuilders.get("/list"))
  34. .andReturn().getResponse().getContentAsString();
  35. System.out.println("Result === "+mvcResult);
  36. }
  37. @Test
  38. public void add() throws Exception {
  39. final MultiValueMap<String, String> params = new LinkedMultiValueMap<>();
  40. params.add("userName", "test2");
  41. params.add("password", "pass1234");
  42. params.add("age", "12");
  43. params.add("email", "test@aicode.com");
  44. String mvcResult= mockMvc.perform(MockMvcRequestBuilders.post("/add")
  45. .params(params)).andReturn().getResponse().getContentAsString();
  46. System.out.println("Result === "+mvcResult);
  47. }
  48. @Test
  49. public void get() throws Exception {
  50. String mvcResult= mockMvc.perform(MockMvcRequestBuilders.get("/get/1"))
  51. .andReturn().getResponse().getContentAsString();
  52. System.out.println("Result === "+mvcResult);
  53. }
  54. @Test
  55. public void modify() throws Exception {
  56. final MultiValueMap<String, String> params = new LinkedMultiValueMap<>();
  57. params.add("id", "1");
  58. params.add("userName", "test1");
  59. params.add("password", "123qwe");
  60. params.add("age", "24");
  61. params.add("email", "test@aicode.com");
  62. String mvcResult= mockMvc.perform(MockMvcRequestBuilders.put("/edit")
  63. .params(params)).andReturn().getResponse().getContentAsString();
  64. System.out.println("Result === "+mvcResult);
  65. }
  66. @Test
  67. public void del() throws Exception {
  68. mockMvc.perform(MockMvcRequestBuilders.delete("/del/2"))
  69. .andReturn();
  70. String mvcResult= mockMvc.perform(MockMvcRequestBuilders.get("/list"))
  71. .andReturn().getResponse().getContentAsString();
  72. System.out.println("Result === "+mvcResult);
  73. }
  74. }
  • @SpringBootTest —— SpringBoot 自 1.4.0 版本开始引入的一个用于测试的注解;
  • @RunWith(SpringRunner.class) ——代表运行一个 Spring 容器;
  • @Transactional——可以使单元测试进行事务回滚,以保证数据库表中没有因测试造成的垃圾数据,再就是保证单元测试可以反复执行;
  • @Before—— 代表在测试启动时候需要提前加载的内容,这里是提前加载 MVC 环境。

执行UserInfoControllerTest.java,然后下面是执行单元测试的结果

关于MockMvc进行单元测试如果不太清楚,可以先百度一下做一下基本了解。

可以点击每个测试方法,查看具体的测试结果

这样,我们使用MockMvc就完成了对Controller层的测试。Service层和Dao层也可以使用MockMvc进行测试,这里就不再进行说明,请读者自行尝试。

三、使用Idea中的工具进行测试

运行AicodeBgmsApplication.java,启动项目。

点击菜单中的Tools——〉Test Restful Web Service,然后在窗口输入参数进行测试。

添加:

点击左侧的绿色右向三角标运行,然后可以看到返回结果。

查询:

点击左侧的绿色右向三角标运行,然后可以看到返回结果。

测试时,请求HTTP method的匹配。

原文地址:https://blog.csdn.net/zhenbie/article/details/84072282

Spring Boot 2.x使用Mockito进行测试的更多相关文章

  1. Spring Boot项目中使用Mockito

    本文首发于个人网站:Spring Boot项目中使用Mockito Spring Boot可以和大部分流行的测试框架协同工作:通过Spring JUnit创建单元测试:生成测试数据初始化数据库用于测试 ...

  2. Spring Boot -05- 多模块结构项目构建与测试(详细图文教程)IDEA 版

    Spring Boot -05- 多模块结构项目构建与测试(详细图文教程)IDEA 版 百度很多博客都不详细,弄了半天才把 Spring Boot 多模块项目构建开发整的差不多,特地重新创建配置,记录 ...

  3. spring boot使用java读取配置文件,DateSource测试,BomCP测试,AnnotationConfigApplicationContext的DataSource注入

    一.配置注解读取配置文件         (1)@PropertySource可以指定读取的配置文件,通过@Value注解获取值   实例:           @PropertySource(val ...

  4. Spring Boot教程(十)异步方法测试

    测试 测试代码如下: @Component public class AppRunner implements CommandLineRunner { private static final Log ...

  5. Spring Boot应用的测试——Mockito

    Spring Boot应用的测试——Mockito Spring Boot可以和大部分流行的测试框架协同工作:通过Spring JUnit创建单元测试:生成测试数据初始化数据库用于测试:Spring ...

  6. Spring Boot 1.4测试的改进

    对Pivotal团队来说,工作上的好事情是他们拥有一个被叫做Pivotal Labs的灵活发展部门,拥有Labs团队的Lean 和 XP程序设计方法学的强大支持,例如结对编程和测试驱动开发.他们对于测 ...

  7. spring boot test中mockito的运用

    mock的意义 在微服务盛行的当下,开发过程中往往出现A应用中某功能的实现需要调用B应用的接口,无论使用RPC还是restful都需要B应用提供接口的实现整个开发工作才能继续进行.从而导致A应用的开发 ...

  8. 在Spring Boot项目中使用Spock测试框架

    本文首发于个人网站:在Spring Boot项目中使用Spock测试框架 Spock框架是基于Groovy语言的测试框架,Groovy与Java具备良好的互操作性,因此可以在Spring Boot项目 ...

  9. Spring Boot 解决方案 - JUnit 测试

    简单的 JUnit 项目 回顾一下创建并运行简单的 JUnit 测试项目,先添加 JUnit 依赖然后编写类似如下模板的测试类,使用 IDE 的话直接用插件运行就行, 使用 Maven 的话运行命令 ...

随机推荐

  1. 「WC2018」即时战略

    「WC2018」即时战略 考虑对于一条链:直接随便找点,然后不断问即可. 对于一个二叉树,树高logn,直接随便找点,然后不断问即可. 正解: 先随便找到一个点,问出到1的路径 然后找别的点,考虑问出 ...

  2. day19 django继续

    上节回顾 django - 路由系统:url.py - 视图函数:views.py - 模板引擎渲染 - HttpResonse(字符串) - render(request,'index.html') ...

  3. CS第三方控件 标签: 总结 2016-04-09 11:51 1398人阅读 评论(27) 收藏

    大家都知道,我现在在做CS的项目,现在是需求频变啊,心里好苦,做了这么久,还是涨了一点点见识的,下面就介绍一下自己最近用到的几款CS的第三方控件. DockPanel 想必大家都用过VS,那么想一下V ...

  4. HDU - 4725_The Shortest Path in Nya Graph

    The Shortest Path in Nya Graph Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (J ...

  5. CSS Specificity

    CSS的specificity特性或称非凡性,它是一个衡量CSS值优先级的一个标准. 其实就是解决冲突,当同一个元素被CSS选择符选中,按照优先权取舍不同的CSS规则. specificity用一个四 ...

  6. 实现一个简易的promise

    //promise里面只有三个状态,且三个状态的转换形式有两种 //由pending转换为fulfilled,由pending转换为rejected //Promise的构造函数参数是一个函数,函数的 ...

  7. python字符串、元组常用操作

    常用字符串操作函数: #Author:CGQ name="I \tam ChenGuoQiang" print(name.capitalize())#首字母大写,其他都小写 pri ...

  8. Linxu 用户和用户组管理1

    Linux 系统是一个多用户任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后 以这个账号的身份进入系统. 用户的账号一方面可以帮助系统管理员对使用系统的用户进 ...

  9. K8s中Pod健康检查源代码分析

    了解k8s中的Liveness和Readiness Liveness: 表明是否容器正在运行.如果liveness探测为fail,则kubelet会kill掉容器,并且会触发restart设置的策略. ...

  10. IP应用加速技术详解:如何提升动静混合站点的访问速率?

    全站加速(DCDN)-IPA是阿里云自主研发四层加速产品,它基于TCP/UDP的私有协议提供加速服务,包括解决跨运营商网络不稳定.单线源站.突发流量.网络拥塞等诸多因素导致的延迟高.服务不稳定的问题, ...