您現在的位置是:首頁 > 籃球

初學spring三:編寫測試用例

  • 由 文飛IT 發表于 籃球
  • 2022-01-11
簡介5. 閱讀testjava 目錄下的TestingWebApplicationTests 檔案@SpringBootTest 註解告訴Spring工廠找一個主要的配置類(例如被@SpringBootApplicaton註解的類),載入其環

測試類怎麼寫

引言

測試用例非常重要,雖然寫了多年CRUD的本人非常少編寫測試用例,但是無數大廠的大拿都重申測試的重要性,所以還是學習一下在Spring下怎樣編寫測試用例吧。

官網地址: https://spring。io/guides/gs/testing-web/

學習的知識點:

@SpringBootTest註解的含義

MockMvc 的操作

操作步驟

1. 與上兩個示例一樣,首先git clone下載官網用例,使用IDEA開啟initial資料夾。

初學spring三:編寫測試用例

2. 留意一下pom.xml的依賴,有關聯的只有spring-boot-starter-test

初學spring三:編寫測試用例

3. 在src/main/java/com.example.testingweb目錄下新增HomeController.class檔案

初學spring三:編寫測試用例

這裡面的幾個知識點我們都遇到過啦。@RequestMapping 包含GET、POST、PUT等請求方式,此處也可用@GetMapping註解來只接受GET請求。

@Controller註解表明該類為一個控制器

@ResponseBody

在方法的前面進行註解表明該方法返回json字串,如果去掉此註解,會報錯。因為沒有此註解Spring工廠會認為return的是一個模板名,找不到模板就報錯啦。思考一下:如果去掉了這個註解,那就把@Controller 改為@RestController註解也是可以正常執行的,為什麼呢?(@RestController 與@Controller的區別)

4.看TestingWebApplication.class檔案,和之前的樣例專案一樣。

初學spring三:編寫測試用例

@SpringBootApplication主要包含了以下幾個註解

@Configuration 表明此類為一個配置類

@EnableAutoConfiguration 開啟自動配置

@ComponentScan 開啟元件掃描,預設掃此檔案下的本目錄和各子目錄下的檔案。例如:HelloController類就是註解了@Controller後,被Spring工廠掃描進來的啦。

EnableWebMvc 註解,官網列出了這個註解說明。暫時忽略

@EnableWebMvc

: Flags the application as a web application and activates key behaviors, such as setting up a

DispatcherServlet

。 Spring Boot adds it automatically when it sees

spring-webmvc

on the classpath。

5. 閱讀test/java 目錄下的TestingWebApplicationTests 檔案

初學spring三:編寫測試用例

@SpringBootTest 註解告訴Spring工廠找一個主要的配置類(例如被@SpringBootApplicaton註解的類),載入其環境(上下文Spring application context)。

6. 在test/java/com.example.testingweb目錄下編寫SmokeTest.java測試類

初學spring三:編寫測試用例

@Autowired 為依賴注入。可以把這個注入註釋掉來測試一下。測試會失敗。 assertThat 為斷言,根據這行程式碼的語義,很明顯就是判斷變數controller不為null,如果為null則測試報錯。

7. 再編寫一個測試類,測試http請求

。編寫HttpRequestTest。java檔案。

初學spring三:編寫測試用例

這段程式碼webEnvironment = SpringBootTest。WebEnvironment。RANDOM_PORT,這個值為測試環境隨機生成一個埠,避免埠衝突,透過@LocalServerPort注入給port。利用Spring boot 提供的TestRestTemplate來模擬瀏覽器請求進行測試。這個TestRestTemplate也是透過依賴注入來注入的。

8. 另外還有一種測試方法。此方法可以不用啟動服務,僅僅測試web層。此方法是使用Spring的 MocMvc 來操作的。

初學spring三:編寫測試用例

裡面有好多細節學習啊。其中引入了 print() 、get() 、 status()等MockMvcResultMatchers的靜態方法。

初學spring三:編寫測試用例

結束語

由於現在只是初步入門,本篇最後的MockMvc的測試學習,以後遇到再深度地進行學習吧。現在只瞭解其能夠幹什麼先。寫測試類還是挺累的,基本一個使用方法都要對應一個測試方法,工作量整整添加了一倍。但是前期如果堅持寫好測試方法,以後地自動測試、運維、排查故障就簡單多啦。可惜目前本人接觸的大部分程式碼都是缺少自動測試用例的,所以導致基本是“人肉運維”。

初學spring三:編寫測試用例

Top