主要是记录对Controller层进行单元测试的过程中遇到的问题
问题1:运行测试用例报错
java.lang.IllegalStateException: Failed to load ApplicationContext
如图1:
图1原因:缺少注解@WebAppConfiguration,声明集成测试环境使用的ApplicationContext将是WebApplicationContext类型
问题2:运行测试用例报错
java.lang.ClassNotFoundException: javax.servlet.ServletContext
如图2:
图2原因:缺少了servlet-api.jar,加上即可以,但是需要注意版本问题,由于我使用的spring4,导入的servlet-api的版本是2.5的,导致报错:
java.lang.NoClassDefFoundError: javax/servlet/SessionCookieConfig
这是因为Spring4 与servlet2.5兼容性问题造成的,Spring4需要使用servlet3.0以上的版本
测试用例实现
图3mockMvc.perform():是模拟一个request请求
andExpect:定义断言,可以附加多个定义期望值,上图中是判断返回的状态码是否为200
andReturn:直接显示所有返回结果
图3代码中的get,andExpect,status(),print(),都是来源于3个静态引用:
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.*;
参考:
网友评论