專題簡介
SpringBoot之路專題是一個記錄本人在使用Spring和SpringBoot相關技術中所遇到的問題和要解決的問題。每用到一處知識點,就會把這處知識補充到Github一個對應的分支上。會以專題的方式,力爭每一篇博客,由淺入深,把每個知識點講解到實戰級別,并且分析Spring源碼。整個項目會以一個開發一個博客系統為最終目標,每一個分支都記錄著一步一步搭建的過程。與大家分享,代碼會同步發布到這里。
閱讀本片文章大約需要5分鐘
1. 概念
- 什么是單元測試
單元測試,一種基本的軟件測試方法。維基百科給出的解釋如下:
在計算機編程中,單元測試(英語:Unit Testing)又稱為模塊測試, 是針對程序模塊(軟件設計的最小單位)來進行正確性檢驗的測試工作。 程序單元是應用的最小可測試部件。
- 應用于什么場景、解決了什么問題
適用于大型項目,多人開發,有持續集成(CI)的項目。單元測試可以很好的保證項目的穩定性和代碼質量。在這里,使用Mock的方式,對相關的api或頁面進行單元測試。
2. 實戰
- 可運行的代碼
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.web.WebAppConfiguration;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.MvcResult;
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
import org.springframework.test.web.servlet.setup.MockMvcBuilders;
import org.springframework.web.context.WebApplicationContext;
@SpringBootApplication
@WebAppConfiguration
@RunWith(SpringJUnit4ClassRunner.class)// 1
public class IndexControllerTest {
private MockMvc mockMvc;// 2
@Autowired
private WebApplicationContext webApplicationContext; // 3
@Before
public void before() {
mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).build(); // 4
}
@Test
public void testIndex() throws Exception {
MvcResult mvcResult = mockMvc.perform(MockMvcRequestBuilders.get("/")).andReturn(); // 5
int status = mvcResult.getResponse().getStatus(); // 6
String responseString = mvcResult.getResponse().getContentAsString(); // 7
Assert.assertEquals("return status not equals 200", 200, status); // 8
Assert.assertEquals("response string not equalse ", "Hello Spring boot", responseString); // 9
}
}
- 代碼串講
1.引入單元測試相關支持類
2.聲明MockMvc
3.聲明WebApplicationContext
4.初始化MockMvc
5.使用MockMvc進行調用
6.獲取Http Status
7.獲得ResponseString
8.使用斷言進行判斷
9.使用斷言進行判斷 - 運行截圖
運行截圖,紅框中為運行結果
3. 寫在后面
單元測試是一種保障軟件質量的非常重要的方法和手段,大家不要因為時間因素等忽略了單元測試。如果想要代碼足夠健壯,以后少給自己留坑,建議多重視單元測試。甚至建議大家采用TDD的方式進行開發。
最后,歡迎大家在github上點Star,項目有更新后,都會第一時間收到通知。代碼在這里