Spring Boot單元測試


一個測試類包含下面兩個注解:
@RunWith(SpringRunner.class)
@SpringBootTest
測試類中可直接注入接口:
@Resource
MyServerMgr myServerMgr;
在方法上加@Test表示它是個測試方法:
@Test
public void query() {
 String result = myServerMgr.query();
 log.info("test query result is {}.", result);
 //使用斷言判斷結果
 assertEquals(result, "query result");
}
可以通過@Before和@After注解修飾的方法,來表示測試方法執行前和執行后的行為。
@Before
public void setUp() throws Exception {
 log.info("Before setUp.");
}
 
@After
public void tearDown() throws Exception {
 log.info("After tearDown.");
}
至此一個簡單的單元測試就完成了。
 
Spring Mock MVC:模擬Servlet容器里的測試控制器。
下面部分介紹如何測試Spring Controller API。
Controller測試類需要額外增加@WebAppConfiguration注解:
@RunWith(SpringRunner.class)
@SpringBootTest
@WebAppConfiguration
需要在測試類中注入WebApplicationContext:
@Resource
private WebApplicationContext webApplicationContext;
需要使用MockMvc模擬發送rest請求,所以需要定義MockMvc變量並在測試方法執行前初始化它:
 private MockMvc mockMvc;
 
 @Before
 public void setUp() throws Exception {
 log.info("set mockmvc");
 mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).build();
// mockMvc = MockMvcBuilders.standaloneSetup(webApplicationContext).build();
 }

需要說明的是,Mock MVC有兩種構建方式:

standaloneSetup:手工創建並配置的控制器。

webAppContextSetup:根據Spring應用程序上下文來構建Mock MVC。

我們采用webAppContextSetup方式。
 
使用@Test注解聲明測試方法:
@Test
public void query() throws Exception {
 mockMvc.perform(get("/myapp"))
 .andExpect(status().isOk())
 .andExpect(content().string("query result"));
}

總結一下:

1、需要熟悉並掌握@RunWith(SpringRunner.class)、@SpringBootTest、@Before、@After、@Test幾個注解的用法。
2、測試服務端接口和測試Controller的不同是Controller需要額外的加載上下文並初始化MockMvc,並通過MockMvc模擬發送rest請求,通過斷言判定結果是否正確。


免責聲明!

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



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