Spring Boot 2.x使用Mockito進行測試


在上一篇,項目基本實現了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的匹配。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM