最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Spring Boot從Controller層進行單元測試的實現(xiàn)

 更新時間:2020年04月26日 14:38:04   作者:嘟神子  
這篇文章主要介紹了Spring Boot從Controller層進行單元測試的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

單元測試是程序員對代碼的自測,一般公司都會嚴格要求單元測試,這是對自己代碼的負責,也是對代碼的敬畏。

一般單元測試都是測試Service層,下面我將演示從Controller層進行單元測試。

無參Controller單元測試示例:

package com.pingan.bloan.genesis.controller.base;

import org.junit.After;
import org.junit.Before;
import org.junit.runner.RunWith;
import com.pingan.bloan.genesis.logwrapper.LogWrapper;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import com.pingan.bloan.genesis.logwrapper.LogWrapperFactory;
import org.springframework.test.context.web.WebAppConfiguration;

@RunWith(SpringRunner.class)
@SpringBootTest
@WebAppConfiguration
public class BaseSpringBootTest {
  protected LogWrapper logger = LogWrapperFactory.getLogWrapper(BaseSpringBootTest.class);
  
  @Before
  public void init() {
    logger.info("開始測試...");
  }
  
  @After
  public void after() {
    logger.info("測試結束...");
  }
}

package com.pingan.bloan.genesis.controller;

import org.junit.Test;
import org.junit.Before;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.MvcResult;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.web.servlet.setup.MockMvcBuilders;
import com.pingan.bloan.genesis.controller.base.BaseSpringBootTest;
import org.springframework.test.web.servlet.result.MockMvcResultHandlers;
import org.springframework.test.web.servlet.result.MockMvcResultMatchers;
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;

/**
 * DemoController測試
 * @author 
 *
 */
public class DemoControllerTest extends BaseSpringBootTest {
  @Autowired
  private DemoController demoController;
  
  private MockMvc mockMvc;
  
  @Before
  public void setup() {
    mockMvc = MockMvcBuilders.standaloneSetup(demoController).build();
  }
  
  @Test
  public void demo() throws Exception {
    MvcResult mvcResult = mockMvc.perform(MockMvcRequestBuilders.get("/demo/demo"))
                   .andExpect(MockMvcResultMatchers.status().isOk())
                   .andDo(MockMvcResultHandlers.print())
                   .andReturn();

    logger.info(mvcResult.getResponse().getContentAsString());
  }
}

有參Controller單元測試示例一:

package com.pingan.bloan.genesis.controller;

import org.junit.Test;
import org.junit.Before;
import org.springframework.http.MediaType;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.MvcResult;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.web.servlet.setup.MockMvcBuilders;
import com.pingan.bloan.genesis.controller.base.BaseSpringBootTest;
import org.springframework.test.web.servlet.result.MockMvcResultHandlers;
import org.springframework.test.web.servlet.result.MockMvcResultMatchers;
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;

/**
 * 加解密controller測試
 * 
 * @author 
 *
 */
public class MessageEncryptionControllerTest extends BaseSpringBootTest {
  @Autowired
  private MessageEncryptionController messageEncryptionController;
  
  private MockMvc mockMvc;
  
  @Before
  public void setup() {
    mockMvc = MockMvcBuilders.standaloneSetup(messageEncryptionController).build();
  }
  
  /**
   * 加密測試
   * @throws Exception 
   */
  @Test
  public void encryption() throws Exception {
    MvcResult mvcResult = mockMvc.perform(MockMvcRequestBuilders.post("/secret/encryption")
                   .accept(MediaType.APPLICATION_JSON).param("originContent", "15221365094"))
                   .andExpect(MockMvcResultMatchers.status().isOk())
                   .andDo(MockMvcResultHandlers.print())
                   .andReturn();
    
    logger.info(mvcResult.getResponse().getContentAsString());
  }
  
  /**
   * 解密測試
   * @throws Exception 
   */
  @Test
  public void deciphering() throws Exception {
    MvcResult mvcResult = mockMvc.perform(MockMvcRequestBuilders.post("/secret/deciphering")
                   .accept(MediaType.APPLICATION_JSON).param("secretContent", "4BD6EE1A13593F97E6CEA20A2BA9E6E4"))
                   .andExpect(MockMvcResultMatchers.status().isOk())
                   .andDo(MockMvcResultHandlers.print())
                   .andReturn();

    logger.info(mvcResult.getResponse().getContentAsString());
  }
}

有參Controller單元測試示例二:

package com.pingan.bloan.genesis.controller;

import org.junit.Test;
import org.junit.Before;
import com.alibaba.fastjson.JSONObject;
import org.springframework.http.MediaType;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.MvcResult;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.web.servlet.setup.MockMvcBuilders;
import com.pingan.bloan.genesis.controller.base.BaseSpringBootTest;
import org.springframework.test.web.servlet.result.MockMvcResultHandlers;
import org.springframework.test.web.servlet.result.MockMvcResultMatchers;
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
import com.pingan.bloan.genesis.model.mobiletelephone.MobileTelephoneRequest;

/**
 * 客戶手機掩碼信息加密處理測試
 * @author 
 *
 */
public class MobileTelephoneIdempotentControllerTest extends BaseSpringBootTest {
  @Autowired
  private MobileTelephoneIdempotentController mobileTelephoneIdempotentController;
  
  private MockMvc mockMvc;
  
  @Before
  public void setup() {
    mockMvc = MockMvcBuilders.standaloneSetup(mobileTelephoneIdempotentController).build();
  }
  
  /**
   * 保存加密處理的客戶信息
   * @throws Exception 
   */
  @Test
  public void saveCustomerEncryptionMessage() throws Exception {
    MobileTelephoneRequest request = new MobileTelephoneRequest();
    request.setCustomerId("RL20180304000099");
    request.setMobileTelephone("18883270484");
    request.setCcfMobileTelephone("13904108866");
    
    MvcResult mvcResult = mockMvc.perform(MockMvcRequestBuilders.post("/customerEncryption/save")
                   .contentType(MediaType.APPLICATION_JSON)
                   .content(JSONObject.toJSONString(request)))
                   .andExpect(MockMvcResultMatchers.status().isOk())
                   .andDo(MockMvcResultHandlers.print())
                   .andReturn();
    
    logger.info(mvcResult.getResponse().getContentAsString());
  }
}

Suite一次性執(zhí)行多個單元測試:

package com.pingan.bloan.genesis.controller;

import org.junit.runners.Suite;
import org.junit.runner.RunWith;

/**
 * 打包測試
 * 配置測試類,一次性執(zhí)行所有配置的測試類
 * @author 
 *
 */
@RunWith(Suite.class)
@Suite.SuiteClasses({MessageEncryptionControllerTest.class, DemoControllerTest.class})
public class SuiteExecuteTests {
  // 不用寫代碼,只需要注解即可(在SuiteClasses中配置測試類)
}

代碼單元測試,讓代碼更加健壯。

到此這篇關于Spring Boot從Controller層進行單元測試的實現(xiàn)的文章就介紹到這了,更多相關Spring Boot Controller單元測試內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 教你快速搭建sona服務及idea使用sona的方法

    教你快速搭建sona服務及idea使用sona的方法

    Sonar 是一個用于代碼質量管理的開放平臺。通過插件機制,Sonar 可以集成不同的測試工具,代碼分析工具,以及持續(xù)集成工具,本文給大家分享搭建sona服務及idea使用sona的方法,感興趣的朋友一起看看吧
    2021-06-06
  • 快速上手Java中的Properties集合類

    快速上手Java中的Properties集合類

    java.util.Properties集合繼承于Hashtable,來表示一個持久的屬性集,他使用鍵值結構存儲數(shù)據(jù),每個鍵及其對應的值都是一個字符串,該類被許多java類使用,下面這篇文章主要給大家介紹了關于如何快速上手Java中Properties集合類的相關資料,需要的朋友可以參考下
    2023-02-02
  • 詳解Spring Cloud Zuul 服務網關

    詳解Spring Cloud Zuul 服務網關

    本篇文章主要介紹了詳解Spring Cloud Zuul 服務網關,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-12-12
  • Java中super關鍵字介紹以及super()的使用

    Java中super關鍵字介紹以及super()的使用

    這幾天看到類在繼承時會用到this和super,這里就做了一點總結,下面這篇文章主要給大家介紹了關于Java中super關鍵字介紹以及super()使用的相關資料,需要的朋友可以參考下
    2022-01-01
  • Java輸入輸出流實例詳解

    Java輸入輸出流實例詳解

    這篇文章主要介紹了Java輸入輸出流,結合實例形式詳細分析了Java常見的輸入輸出常用操作技巧與相關注意事項,需要的朋友可以參考下
    2018-09-09
  • Mybatis控制臺打印SQL語句的兩種實現(xiàn)方式

    Mybatis控制臺打印SQL語句的兩種實現(xiàn)方式

    在使用Mybatis開發(fā)時,由于可以動態(tài)拼接SQL,當動態(tài)SQL拼接塊過多,直接從*mapper.xml中找出完整的SQL較難,此時,可以通過兩種方法調試出SQL,方法一,將ibatislog4j運行級別調到DEBUG,在控制臺打印出ibatis運行的SQL語句
    2024-10-10
  • Spring Boot Admin的使用詳解(Actuator監(jiān)控接口)

    Spring Boot Admin的使用詳解(Actuator監(jiān)控接口)

    這篇文章主要介紹了Spring Boot Admin的使用詳解(Actuator監(jiān)控接口),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-05-05
  • Java中的線程死鎖解讀

    Java中的線程死鎖解讀

    這篇文章主要介紹了Java中的線程死鎖解讀,死鎖就是指兩個或兩個以上的線程在搶占資源時,造成相互等待的現(xiàn)象,稱為死鎖,在沒有外力的情況下是會一直等待無法執(zhí)行下去,需要的朋友可以參考下
    2024-01-01
  • Java空集合使用場景與填坑記錄

    Java空集合使用場景與填坑記錄

    這篇文章主要給大家介紹了關于Java空集合使用場景與填坑的相關資料,并且給大家介紹了java判斷集合是否為空的方法,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考借鑒,下面隨著小編來一起學習學習吧
    2018-08-08
  • JavaWeb 簡單分頁實現(xiàn)代碼

    JavaWeb 簡單分頁實現(xiàn)代碼

    這篇文章主要介紹了JavaWeb 簡單分頁實現(xiàn)代碼的相關資料,需要的朋友可以參考下
    2016-11-11

最新評論

新密市| 丹阳市| 合江县| 古丈县| 大庆市| 两当县| 贵港市| 花垣县| 云林县| 通州区| 扶绥县| 本溪| 弥渡县| 桐乡市| 榆中县| 怀仁县| 九龙县| 张掖市| 左权县| 绥化市| 保亭| 大埔区| 崇仁县| 威宁| 宜川县| 宁武县| 满城县| 巴东县| 陕西省| 内乡县| 营口市| 文昌市| 松滋市| 大兴区| 阳谷县| 宜宾县| 香河县| 庆云县| 仙桃市| 抚顺县| 蕲春县|