SpringBoot註解
一個測試類包含下面兩個註解:
<pre style="font-family: Courier New; font-size: 12px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; white-space: pre-wrap; word-wrap: break-word;">@RunWith(SpringRunner.class)
@SpringBootTest</pre>
測試類中可直接注入介面:
<pre style="font-family: Courier New; font-size: 12px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; white-space: pre-wrap; word-wrap: break-word;">@Resource
MyServerMgr myServerMgr;</pre>
在方法上加@Test表示它是個測試方法:
[](javascript:void(0); "複製程式碼")
<pre style="font-family: Courier New; font-size: 12px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; white-space: pre-wrap; word-wrap: break-word;">@Test public void query() {
String result = myServerMgr.query();
log.info("test query result is {}.", result); //使用斷言判斷結果
assertEquals(result, "query result");
}</pre>
](javascript:void(0); "複製程式碼")
可以通過@Before和@After註解修飾的方法,來表示測試方法執行前和執行後的行為。
[](javascript:void(0); "複製程式碼")
<pre style="font-family: Courier New; font-size: 12px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; white-space: pre-wrap; word-wrap: break-word;">@Before public void setUp() throws Exception {
log.info("Before setUp.");
}
@After public void tearDown() throws Exception {
log.info("After tearDown.");
}</pre>
](javascript:void(0); "複製程式碼")
至此一個簡單的單元測試就完成了。
Spring Mock MVC:模擬Servlet容器裡的測試控制器。
下面部分介紹如何測試Spring Controller API。
Controller測試類需要額外增加@WebAppConfiguration註解:
<pre style="font-family: Courier New; font-size: 12px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; white-space: pre-wrap; word-wrap: break-word;">@RunWith(SpringRunner.class)
@SpringBootTest
@WebAppConfiguration</pre>
需要在測試類中注入WebApplicationContext:
<pre style="font-family: Courier New; font-size: 12px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; white-space: pre-wrap; word-wrap: break-word;">@Resource private WebApplicationContext webApplicationContext;</pre>
需要使用MockMvc模擬傳送rest請求,所以需要定義MockMvc變數並在測試方法執行前初始化它:
[](javascript:void(0); "複製程式碼")
<pre style="font-family: Courier New; font-size: 12px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; white-space: pre-wrap; word-wrap: break-word;"> private MockMvc mockMvc;
@Before public void setUp() throws Exception {
log.info("set mockmvc");
mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).build(); // mockMvc = MockMvcBuilders.standaloneSetup(webApplicationContext).build();
}</pre>
](javascript:void(0); "複製程式碼")
需要說明的是,Mock MVC有兩種構建方式:
standaloneSetup:手工建立並配置的控制器。
webAppContextSetup:根據Spring應用程式上下文來構建Mock MVC。
我們採用webAppContextSetup方式。
使用@Test註解宣告測試方法:
[](javascript:void(0); "複製程式碼")
<pre style="font-family: Courier New; font-size: 12px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; white-space: pre-wrap; word-wrap: break-word;">@Test public void query() throws Exception {
mockMvc.perform(get("/myapp"))
.andExpect(status().isOk())
.andExpect(content().string("query result"));
}</pre>
](javascript:void(0); "複製程式碼")
總結一下:
1、需要熟悉並掌握@RunWith(SpringRunner.class)、@SpringBootTest、@Before、@After、@Test幾個註解的用法。
2、測試服務端介面和測試Controller的不同是Controller需要額外的載入上下文並初始化MockMvc,並通過MockMvc模擬傳送rest請求,通過斷言判定結果是否正確
相關文章
- 【SpringBoot系列】SpringBoot註解詳解Spring Boot
- SpringBoot 註解@ConfiguretionPropertiesSpring Boot
- Springboot 常用註解Spring Boot
- java springboot 註解JavaSpring Boot
- 註解@PropertySource使用 springbootSpring Boot
- SpringBoot系列 註解大全Spring Boot
- 002 SpringBoot 常用註解Spring Boot
- SpringBoot(15)—@Conditional註解Spring Boot
- springboot的@ConditionalOnBean註解Spring BootBean
- Springboot註解@ConfigurationProperties報錯Spring Boot
- SpringBoot主配置和註解Spring Boot
- springboot常用註解記錄Spring Boot
- SpringBoot註解大全(詳細)Spring Boot
- springboot介面接參註解詳解Spring Boot
- Spring註解篇,學完註解深入瞭解SpringBoot更容易Spring Boot
- SpringBoot 註解呼叫Redis快取Spring BootRedis快取
- springboot系列文章之SpringBootApplication註解Spring BootAPP
- SpringBoot 註解:全家桶快速通Spring Boot
- Spring/SpringBoot常用註解總結Spring Boot
- SpringBoot(14)—註解裝配BeanSpring BootBean
- SpringBoot自定義校驗註解Spring Boot
- springBoot自定義註解的使用Spring Boot
- springboot註解方式使用redis快取Spring BootRedis快取
- java中SpringBoot定時器註解JavaSpring Boot定時器
- SpringBoot原始碼解析-@ConditionalOnXXX註解原理Spring Boot原始碼
- 【SpringBoot實戰】核心配置和註解Spring Boot
- Springboot中註解@Configuration原始碼分析Spring Boot原始碼
- SpringBoot基於註解方式配置FilterSpring BootFilter
- SpringBoot註解最全詳解(整合超詳細版本)Spring Boot
- SpringBoot原始碼解讀系列三——引導註解Spring Boot原始碼
- SpringBoot魔法堂:@MatrixVariable引數註解使用詳解Spring Boot
- SpringBoot2.x系列教程之 SpringBoot常用註解彙總Spring Boot
- 一個註解搞定 SpringBoot 介面防刷Spring Boot
- SpringBoot dubbo 的簡單使用註解版本Spring Boot
- SpringBoot自定義註解、AOP列印日誌Spring Boot
- springboot的註解的作用說明(全)Spring Boot
- SpringBoot + MyBatis(註解版),常用的SQL方法Spring BootMyBatisSQL
- springboot:非同步註解@Async的前世今生Spring Boot非同步