springboot单元测试对weblistener的加载测试
使用spring-boot对web项目进行测试时对weblistener进行加载.以proxool连接池的加载为例.
原监听器代码
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();
}
... //其他实现方法
}
|
spring-boot测试适配修改,继承TestExcutionListener接口,实现prepareTestInstance方法,将监听业务同样放在此方法中做预处理即可。
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 {
//启动测试时需要预先的处理
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;
//设置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();
}
}
}
|
以上为个人经验,希望能给大家一个参考,也希望大家多多支持服务器之家。
原文链接:https://blog.csdn.net/ikevin/article/details/78530097