Rog*_*ger 6 java junit spring spring-test mockito
我正在尝试使用JUnit和Mockito对我正在构建的Spring REST Web服务进行测试.我在尝试运行JUnit测试时遇到了一个错误,但无法找到有关该问题的任何信息.堆栈跟踪列出了错误行,.andDo(print())因为我直接从spring.io教程获得该行http://spring.io/guides/tutorials/rest/3/
测试类代码:
public class TestSuite {
MockMvc mockMvc;
@Mock
RestController controller;
@Before
public void setup(){
MockitoAnnotations.initMocks(this);
this.mockMvc = standaloneSetup(controller)
.setMessageConverters(new MappingJackson2HttpMessageConverter()).build();
}
@Test
public void testREST() throws Exception {
when(controller.getThing(any(Integer.class))).thenReturn(TestFixture.getREST(1));
this.mockMvc.perform(get("/{number}", String.valueOf(number))
.accept(MediaType.APPLICATION_JSON))
.andDo(print())
.andExpect(status().isNotFound());
}}
Run Code Online (Sandbox Code Playgroud)
堆栈跟踪:
java.lang.NoSuchMethodError: javax.servlet.http.HttpServletRequest.isAsyncStarted()Z
at org.springframework.test.web.servlet.result.PrintingResultHandler.printAsyncResult(PrintingResultHandler.java:131)
at org.springframework.test.web.servlet.result.PrintingResultHandler.handle(PrintingResultHandler.java:80)
at org.springframework.test.web.servlet.MockMvc$1.andDo(MockMvc.java:155)
at org.company.test.TestSuite.testREST(TestSuite.java:53)`
Run Code Online (Sandbox Code Playgroud)
您正在使用较旧版本的Servlet规范(例如,2.5); 然而,spring-test您使用的版本至少需要Servlet 3.0.
如参考手册的" 测试改进"部分所述,
从Spring 4.0开始,
org.springframework.mock.web包中的模拟集现在基于Servlet 3.0 API.
所以,尽管Spring Framework的4.0和4.1支持Servlet 2.5 部署,Servlet API的嘲笑和Spring MVC的测试框架中spring-test模块需要的Servlet 3.0(具体版本3.0.1或更高版本).
问候,
山姆(spring-test模块的主角)
| 归档时间: |
|
| 查看次数: |
5689 次 |
| 最近记录: |