springboot單元測試對weblistener的加載測試
使用spring-boot對web項目進(jìn)行測試時對weblistener進(jìn)行加載.以proxool連接池的加載為例.
原監(jiān)聽器代碼
1
2
3
4
5
6
7
8
9
10
11
12
13
|
@WebListener public class ProxoolListener implements ServletContextListener{ @Override public void contextDestroyed(ServletContextEvent arg0) { } @Override public void contextInitialized(ServletContextEvent arg0) { loadProxool(); } ... //其他實現(xiàn)方法 } |
spring-boot測試適配修改,繼承TestExcutionListener接口,實現(xiàn)prepareTestInstance方法,將監(jiān)聽業(yè)務(wù)同樣放在此方法中做預(yù)處理即可。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
@WebListener public class ProxoolListener implements ServletContextListener,TestExecutionListener{ @Override public void contextDestroyed(ServletContextEvent arg0) { } @Override public void contextInitialized(ServletContextEvent arg0) { loadProxool(); } @Override public void afterTestClass(TestContext arg0) throws Exception { // TODO 自動生成的方法存根 } @Override public void afterTestMethod(TestContext arg0) throws Exception { // TODO 自動生成的方法存根 } @Override public void beforeTestClass(TestContext arg0) throws Exception { // TODO 自動生成的方法存根 } @Override public void beforeTestMethod(TestContext arg0) throws Exception { // TODO 自動生成的方法存根 } @Override public void prepareTestInstance(TestContext arg0) throws Exception { //啟動測試時需要預(yù)先的處理 loadProxool(); } } |
測試類
1
2
3
4
5
6
7
8
9
10
11
12
|
@RunWith (SpringJUnit4ClassRunner. class ) @TestExecutionListeners (listeners = { ProxoolListener. class , DependencyInjectionTestExecutionListener. class }) public class DemoApplicationTest { @Test public void exampleTest() { try { System.out.println( "Connection is closed : " +ProxoolUtility.getConnection( "proxool.iovdc" ).isClosed()); } catch (SQLException e) { e.printStackTrace(); } } } |
springboot web做單元測試
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
|
package com.ziroom.finance.mbs.web; import com.alibaba.fastjson.JSONObject; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.http.MediaType; 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.request.MockMvcRequestBuilders; import org.springframework.test.web.servlet.result.MockMvcResultHandlers; import org.springframework.test.web.servlet.result.MockMvcResultMatchers; import org.springframework.test.web.servlet.setup.MockMvcBuilders; import org.springframework.web.context.WebApplicationContext; /** * 類說明 :MockMvc 測試web * 作者 :liuys * 日期 :2017/10/11 10:50 * 版本號 : V1.0 */ @RunWith (SpringJUnit4ClassRunner. class ) //開啟web上下文測試 @WebAppConfiguration @SpringBootTest public class LoginControllerTest { //注入webApplicationContext @Autowired private WebApplicationContext webApplicationContext; private MockMvc mockMvc; //設(shè)置mockMvc @Before public void setMockMvc() { mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).build(); } @Test public void login(){ try { JSONObject jsonObject = new JSONObject(); jsonObject.put( "userName" , "liuys26" ); jsonObject.put( "userPw" , "123" ); jsonObject.put( "cityCode" , "801000" ); jsonObject.put( "userType" , "0" ); mockMvc.perform(MockMvcRequestBuilders.post( "/api/login/auth" ) .contentType(MediaType.APPLICATION_JSON) .content(jsonObject.toJSONString()) ).andExpect(MockMvcResultMatchers.status().isOk()) .andDo(MockMvcResultHandlers.print()); } catch (Exception e) { e.printStackTrace(); } } } |
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持服務(wù)器之家。
原文鏈接:https://blog.csdn.net/ikevin/article/details/78530097