单元测试是程序员对代码的自测,一般公司都会严格要求单元测试,这是对自己代码的负责,也是对代码的敬畏。

一般单元测试都是测试Service层,下面我将演示从Controller层进行单元测试。

无参Controller单元测试示例:

  1. package com.pingan.bloan.genesis.controller.base;
  2.  
  3. import org.junit.After;
  4. import org.junit.Before;
  5. import org.junit.runner.RunWith;
  6. import com.pingan.bloan.genesis.logwrapper.LogWrapper;
  7. import org.springframework.boot.test.context.SpringBootTest;
  8. import org.springframework.test.context.junit4.SpringRunner;
  9. import com.pingan.bloan.genesis.logwrapper.LogWrapperFactory;
  10. import org.springframework.test.context.web.WebAppConfiguration;
  11.  
  12. @RunWith(SpringRunner.class)
  13. @SpringBootTest
  14. @WebAppConfiguration
  15. public class BaseSpringBootTest {
  16. protected LogWrapper logger = LogWrapperFactory.getLogWrapper(BaseSpringBootTest.class);
  17.  
  18. @Before
  19. public void init() {
  20. logger.info("开始测试...");
  21. }
  22.  
  23. @After
  24. public void after() {
  25. logger.info("测试结束...");
  26. }
  27. }
  1. package com.pingan.bloan.genesis.controller;
  2.  
  3. import org.junit.Test;
  4. import org.junit.Before;
  5. import org.springframework.test.web.servlet.MockMvc;
  6. import org.springframework.test.web.servlet.MvcResult;
  7. import org.springframework.beans.factory.annotation.Autowired;
  8. import org.springframework.test.web.servlet.setup.MockMvcBuilders;
  9. import com.pingan.bloan.genesis.controller.base.BaseSpringBootTest;
  10. import org.springframework.test.web.servlet.result.MockMvcResultHandlers;
  11. import org.springframework.test.web.servlet.result.MockMvcResultMatchers;
  12. import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
  13.  
  14. /**
  15. * DemoController测试
  16. * @author
  17. *
  18. */
  19. public class DemoControllerTest extends BaseSpringBootTest {
  20. @Autowired
  21. private DemoController demoController;
  22.  
  23. private MockMvc mockMvc;
  24.  
  25. @Before
  26. public void setup() {
  27. mockMvc = MockMvcBuilders.standaloneSetup(demoController).build();
  28. }
  29.  
  30. @Test
  31. public void demo() throws Exception {
  32. MvcResult mvcResult = mockMvc.perform(MockMvcRequestBuilders.get("/demo/demo"))
  33. .andExpect(MockMvcResultMatchers.status().isOk())
  34. .andDo(MockMvcResultHandlers.print())
  35. .andReturn();
  36.  
  37. logger.info(mvcResult.getResponse().getContentAsString());
  38. }
  39. }

有参Controller单元测试示例一:

  1. package com.pingan.bloan.genesis.controller;
  2.  
  3. import org.junit.Test;
  4. import org.junit.Before;
  5. import org.springframework.http.MediaType;
  6. import org.springframework.test.web.servlet.MockMvc;
  7. import org.springframework.test.web.servlet.MvcResult;
  8. import org.springframework.beans.factory.annotation.Autowired;
  9. import org.springframework.test.web.servlet.setup.MockMvcBuilders;
  10. import com.pingan.bloan.genesis.controller.base.BaseSpringBootTest;
  11. import org.springframework.test.web.servlet.result.MockMvcResultHandlers;
  12. import org.springframework.test.web.servlet.result.MockMvcResultMatchers;
  13. import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
  14.  
  15. /**
  16. * 加解密controller测试
  17. *
  18. * @author
  19. *
  20. */
  21. public class MessageEncryptionControllerTest extends BaseSpringBootTest {
  22. @Autowired
  23. private MessageEncryptionController messageEncryptionController;
  24.  
  25. private MockMvc mockMvc;
  26.  
  27. @Before
  28. public void setup() {
  29. mockMvc = MockMvcBuilders.standaloneSetup(messageEncryptionController).build();
  30. }
  31.  
  32. /**
  33. * 加密测试
  34. * @throws Exception
  35. */
  36. @Test
  37. public void encryption() throws Exception {
  38. MvcResult mvcResult = mockMvc.perform(MockMvcRequestBuilders.post("/secret/encryption")
  39. .accept(MediaType.APPLICATION_JSON).param("originContent", "15221365094"))
  40. .andExpect(MockMvcResultMatchers.status().isOk())
  41. .andDo(MockMvcResultHandlers.print())
  42. .andReturn();
  43.  
  44. logger.info(mvcResult.getResponse().getContentAsString());
  45. }
  46.  
  47. /**
  48. * 解密测试
  49. * @throws Exception
  50. */
  51. @Test
  52. public void deciphering() throws Exception {
  53. MvcResult mvcResult = mockMvc.perform(MockMvcRequestBuilders.post("/secret/deciphering")
  54. .accept(MediaType.APPLICATION_JSON).param("secretContent", "4BD6EE1A13593F97E6CEA20A2BA9E6E4"))
  55. .andExpect(MockMvcResultMatchers.status().isOk())
  56. .andDo(MockMvcResultHandlers.print())
  57. .andReturn();
  58.  
  59. logger.info(mvcResult.getResponse().getContentAsString());
  60. }
  61. }

有参Controller单元测试示例二:

  1. package com.pingan.bloan.genesis.controller;
  2.  
  3. import org.junit.Test;
  4. import org.junit.Before;
  5. import com.alibaba.fastjson.JSONObject;
  6. import org.springframework.http.MediaType;
  7. import org.springframework.test.web.servlet.MockMvc;
  8. import org.springframework.test.web.servlet.MvcResult;
  9. import org.springframework.beans.factory.annotation.Autowired;
  10. import org.springframework.test.web.servlet.setup.MockMvcBuilders;
  11. import com.pingan.bloan.genesis.controller.base.BaseSpringBootTest;
  12. import org.springframework.test.web.servlet.result.MockMvcResultHandlers;
  13. import org.springframework.test.web.servlet.result.MockMvcResultMatchers;
  14. import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
  15. import com.pingan.bloan.genesis.model.mobiletelephone.MobileTelephoneRequest;
  16.  
  17. /**
  18. * 客户手机掩码信息加密处理测试
  19. * @author
  20. *
  21. */
  22. public class MobileTelephoneIdempotentControllerTest extends BaseSpringBootTest {
  23. @Autowired
  24. private MobileTelephoneIdempotentController mobileTelephoneIdempotentController;
  25.  
  26. private MockMvc mockMvc;
  27.  
  28. @Before
  29. public void setup() {
  30. mockMvc = MockMvcBuilders.standaloneSetup(mobileTelephoneIdempotentController).build();
  31. }
  32.  
  33. /**
  34. * 保存加密处理的客户信息
  35. * @throws Exception
  36. */
  37. @Test
  38. public void saveCustomerEncryptionMessage() throws Exception {
  39. MobileTelephoneRequest request = new MobileTelephoneRequest();
  40. request.setCustomerId("RL20180304000099");
  41. request.setMobileTelephone("18883270484");
  42. request.setCcfMobileTelephone("13904108866");
  43.  
  44. MvcResult mvcResult = mockMvc.perform(MockMvcRequestBuilders.post("/customerEncryption/save")
  45. .contentType(MediaType.APPLICATION_JSON)
  46. .content(JSONObject.toJSONString(request)))
  47. .andExpect(MockMvcResultMatchers.status().isOk())
  48. .andDo(MockMvcResultHandlers.print())
  49. .andReturn();
  50.  
  51. logger.info(mvcResult.getResponse().getContentAsString());
  52. }
  53. }

Suite一次性执行多个单元测试:

  1. package com.pingan.bloan.genesis.controller;
  2.  
  3. import org.junit.runners.Suite;
  4. import org.junit.runner.RunWith;
  5.  
  6. /**
  7. * 打包测试
  8. * 配置测试类,一次性执行所有配置的测试类
  9. * @author
  10. *
  11. */
  12. @RunWith(Suite.class)
  13. @Suite.SuiteClasses({MessageEncryptionControllerTest.class, DemoControllerTest.class})
  14. public class SuiteExecuteTests {
  15. // 不用写代码,只需要注解即可(在SuiteClasses中配置测试类)
  16. }

代码单元测试,让代码更加健壮。

Spring Boot从Controller层进行单元测试的更多相关文章

  1. 关于Spring MVC Controller 层的单元测试

    关于Spring MVC Controller 层的单元测试 测试准备工作: 1.搭建测试Web环境 2.注入Controller 类 3.编写测试数据 测试数据的文件名一定要与测试类的文件名相同,比 ...

  2. Spring Boot 整合视图层技术,application全局配置文件

    目录 Spring Boot 整合视图层技术 Spring Boot 整合jsp Spring Boot 整合freemarker Spring Boot 整合视图层技术 Spring Boot 整合 ...

  3. Spring Boot的Controller控制层和页面

    一.项目实例 1.项目结构 2.项目代码 1).ActionController.Java: package com.example.controller; import java.util.Date ...

  4. Spring Boot 系列(二)单元测试&网络请求

    实际开发中,Junit单元测试是必不可少的.在spring-boot 中可以通过测试模块(spring-boot-starter-test)快速使用单元测试功能. 开始 本示例在 spring boo ...

  5. Spring Boot 整合视图层技术

    这一节我们主要学习如何整合视图层技术: Jsp Freemarker Thymeleaf 在之前的案例中,我们都是通过 @RestController 来处理请求,所以返回的内容为json对象.那么如 ...

  6. spring security 在controller层 方法级别使用注解 @PreAuthorize("hasRole('ROLE_xxx')")设置权限拦截 ,无权限则返回403

    1.前言 以前学习的时候使用权限的拦截,一般都是对路径进行拦截 ,要么用拦截器设置拦截信息,要么是在配置文件内设置拦截信息, spring security 支持使用注解的形式 ,写在方法和接口上拦截 ...

  7. Spring Boot(十二)单元测试JUnit

    一.介绍 JUnit是一款优秀的开源Java单元测试框架,也是目前使用率最高最流行的测试框架,开发工具Eclipse和IDEA对JUnit都有很好的支持,JUnit主要用于白盒测试和回归测试. 白盒测 ...

  8. spring boot利用controller来测试写的类

    我们在开发spring boot应用程序的时候,往往需要测试某个写好的类,但是在测试的时候发现不太好测试,用Junit等测试框架,总是会报一些问题,大致是找不到配置文件以及无法利用spring创建的对 ...

  9. Spring Boot 整合Web 层技术(整合Servlet)

    1 整合Servlet 方式一1.1通过注解扫描完成Servlet 组件的注册      1.1.1创建Servlet /*** 整合Servlet 方式一*/@WebServlet(name = & ...

随机推荐

  1. LeetCode——Kth Largest Element in an Array

    Description: Find the kth largest element in an unsorted array. Note that it is the kth largest elem ...

  2. 【BZOJ3003】LED BFS+状压DP

    [BZOJ3003]LED Description LED屏是由一个庞大的点阵小灯泡组成的,一开始每个小灯泡都不发光.每一行一共有N个小灯泡,依次标号为1~n.现在给定K个点,要求这K个点发光,其余点 ...

  3. 3.html+.ashx(删除学生信息)

    C03ListStu.ashx 0:false(删除);1:true(正常). (数据库里定义个BOOL型,TRUE表示正常FALSE表示删除) <html> <head> & ...

  4. Powerdesigner逆向工程从sql server数据库生成pdm【转】

    Powerdesigner逆向工程从sql server数据库生成pdm 第一步:打开"控制面板"中的"管理工具" 第二步:点击"管理工具" ...

  5. 南京网络赛J-Sum【数论】

    A square-free integer is an integer which is indivisible by any square number except 11. For example ...

  6. 字符串函数---atof()函数详解

    atof()函数 atof(),是C 语言标准库中的一个字符串处理函数,功能是把字符串转换成浮点数,所使用的头文件为<stdlib.h>.该函数名是 “ascii to floating ...

  7. binlog分析方法

    线上处理问题的时候经常遇到业务说写入了但是数据不对,这种情况八成是业务改了之后又改过来了.但是我们需要证据,下面我们就说说简单的binlog分析 工具:mysqlbinlog #-vvv显示明文sql ...

  8. OGG双向复制

    注意:在进行如下配置之前,先在源数据库(原来的目标数据库)端添加辅助的redolog配置:      1.SQL> alter database add supplemental log dat ...

  9. 分区默认segment大小变化(64k—>8M)

    _partition_large_extents和_index_partition_large_extents 参考: http://www.xifenfei.com/2013/08/%E5%88%8 ...

  10. Python实现Table To Point代码 分类: Python 2015-07-31 18:45 3人阅读 评论(0) 收藏

    </pre><pre name="code" class="python"><span style="font-fami ...