SpringMVC : Controller层单元测试Mock
程序员文章站
2022-03-02 18:06:43
...
代码
@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration
@ContextConfiguration(locations = { "classpath:applicationContext.xml",
"file:src/main/webapp/WEB-INF/dispatcherServlet-servlet.xml" })
public class MvcTest {
@Autowired
WebApplicationContext context;
MockMvc mockMvc;
@Before
public void initMokcMvc() {
mockMvc = MockMvcBuilders.webAppContextSetup(context).build();
}
@Test
public void testPage() throws Exception {
MvcResult result = mockMvc.perform(MockMvcRequestBuilders.get("/messages").param("pn", "5"))
.andReturn();
MockHttpServletRequest request = result.getRequest();
PageInfo pi = (PageInfo) request.getAttribute("pageInfo");
System.out.println(pi);
}
}
配置测试环境
- 在
pom.xml
中导入Spring test
模块<dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>4.3.7.RELEASE</version> </dependency>
- 注意 : Spring4 测试的时候,需要
servlet3.0
的支持<dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.0.1</version> <scope>provided</scope> </dependency>
- 给测试类配置注解
@RunWith(SpringJUnit4ClassRunner.class) @WebAppConfiguration @ContextConfiguration(locations = { "classpath:applicationContext.xml", "file:src/main/webapp/WEB-INF/dispatcherServet-servlet.xml" })
- @RunWith(SpringJUnit4ClassRunner.class) 测试运行于Spring测试环境;
- @ContextConfiguration 加载Spring的配置文件
- @WebAppConfiguration 表明应该为测试加载WebApplicationContext,
必须
与@ContextConfiguration一起使用 - @Before 编写
测试方法执行前
的逻辑,可以初始化MockMVC实例
- @Test 标明
实际测试方法
,建议每个Controller
对应一个测试类。
在测试类中,编写测试逻辑
调用 mockMvc.perform
执行模拟请求
-
代码来源
MockHttpServletRequestBuilder createMessage = get("/messages").param("pn", "5"); mockMvc.perform(createMessage) .andExpect(status().is3xxRedirection()) .andExpect(redirectedUrl("/messages/123"));
- get请求和Controller中的方法请求类型对应
- param为传递的参数,允许多个
- andExpect为结果断言,
- isOk代表的是返回正常也就是http的200,
- view.name为返回的视图名称
- andDo为执行后操作,本例的print为打印出结果
- return返回结果,可以对结果进一步操作
关键词
springMVC整合Junit4进行单元测试
、Spring中DAO层接口的单元测试
推荐阅读
-
Spring Boot从Controller层进行单元测试的实现
-
的中文乱码问题">
SpringMVC的controller层接收来自jsp页面通过
关于SpringMVC在Controller层方法的参数解析详解
-
[单元测试]jmockit+SpringMVC整合并测试Controller层方法(三)
-
SpringMvc Controller单元测试
-
Mockito单元测试之SpringMvc controller
-
springmvc mock单元测试
-
springMvc controller 单元测试
-
单元测试Junit Test 聚焦Controller层 Java版
-
springboot 单元测试 (controller层) 方法 -- MockMvc