Java 用mvc测试Spring

Java 用mvc测试Spring,java,spring,Java,Spring,请帮我用MockMvc进行Spring测试 我已经删除了metod的路径代码 @Controller @RequestMapping("/read/object-attributes") public class GroupAttributeReadController { @Autowired private GroupAttributeService groupAttributeService; @RequestMapping(value = "/import", method = Req

请帮我用MockMvc进行Spring测试

我已经删除了metod的路径代码

@Controller
@RequestMapping("/read/object-attributes")
public class GroupAttributeReadController {

@Autowired
private GroupAttributeService groupAttributeService;
@RequestMapping(value = "/import", method = RequestMethod.GET)
public
@ResponseBody
GroupAttributeBufferListResponse findAll(@RequestParam(value = "pageNum", required = true) int pageNum,
                                     @RequestParam(value = "pageSize", required = true) int pageSize,
                                     @RequestParam(value = "order", required = false) String order,
                                     @RequestParam(value = "orderDir", required = false) String orderDir,
                                     @RequestParam(value = "loadSession") Long loadSession,
                                     @RequestParam( value = "showCorrect", defaultValue = "0") Integer showCorrect,
                                     @RequestParam(value="naviUser") String user,
                                     @RequestParam Map<String, String > params,
                                     HttpServletResponse response, Locale locale) {

}
但我不明白为什么是404。也许我忘了什么?可能需要配置文件,我不知道:

java.lang.AssertionError: Status 
Expected :200
Actual   :404
<Click to see difference>


at org.springframework.test.util.AssertionErrors.fail(AssertionErrors.java:54)
at org.springframework.test.util.AssertionErrors.assertEquals(AssertionErrors.java:81)
at org.springframework.test.web.servlet.result.StatusResultMatchers$10.match(StatusResultMatchers.java:665)
at org.springframework.test.web.servlet.MockMvc$1.andExpect(MockMvc.java:171)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
at org.springframework.test.context.junit4.statements.RunBeforeTestMethodCallbacks.evaluate(RunBeforeTestMethodCallbacks.java:75)
at org.springframework.test.context.junit4.statements.RunAfterTestMethodCallbacks.evaluate(RunAfterTestMethodCallbacks.java:86)
at org.springframework.test.context.junit4.statements.SpringRepeat.evaluate(SpringRepeat.java:84)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:252)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:94)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)
at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:191)
at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:68)
at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:51)
at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242)
at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)

您需要提供所需的参数

例如:

@试验 public void testAddInformation引发异常{ this.mockMvc.performpost/sample.paramname、provideName.paramaddress、providedAddress.andExpectstatus.isOk; };

您还应该包括@ContextConfiguration-以下是一段来自:

请注意,@WebAppConfiguration必须与 @ContextConfiguration,在单个测试类或测试类层次结构中

因此,您的测试类应该如下所示:

@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration
@ContextConfiguration( classes = AppConfig.class, WebConfig.class )
public class ControllersTest {
   (...)
}

即使我收到请求?这是示例代码。相应地执行它,就像你有得到得到得到…如果发布发布发布。易于理解的MockHttpServletRequestBuilder请求=MockMvcRequestBuilders.get/read/object-attributes/import.parampageNum,2.parampageSize,5.paramorder,test.paramorderDir,DESC.paramloadSession,1.paramshowCorrect,0.paramnaviUser,用户参数过滤测试,测试;结果匹配器ok=MockMvcResultMatchers.status.isOk;MockHttpServletRequestBuilder请求=MockMvcRequestBuilders.get/read/object-attributes/import.parampageNum,2.parampageSize,5.paramorder,test.paramorderDir,DESC.paramloadSession,1.paramshowCorrect,0.paramnaviUser,用户参数过滤测试,测试;this.mockMvc.performrequest.andExpectok;你能像我一样试一下吗。以完全相同的方式让我知道您试图检索的资源或条目是否存在?首先尝试通过执行POST获取数据,然后执行findAll。。。在它的.andExcpect…之前,您可以添加.andDoprint。这将为您提供失败原因的详细信息。打印来自MockMvcResultHandlers类。请尝试此操作并告诉我们您得到的错误。MockHttpServletRequest:HTTP方法=获取请求URI=/read/object attributes/download Parameters={loadSession=[1],showCorrect=[0],FILTER_Test=[Test],naviUser=[user]}头={}处理程序:Type=null异步:Async start=false异步结果=null解析异常:Type=null ModelAndView:View name=null视图=null模型=null FlashMap:Attributes=null mockhttpservletresponse:Status=404错误消息=nullHeaders={}Content type=null Body=Forwarded URL=null Redirected URL=null Cookies=[]URI是/read/object attributes/download,而不是/read/object attributes/import。真奇怪。而且似乎缺少一些参数。
@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration
@ContextConfiguration( classes = AppConfig.class, WebConfig.class )
public class ControllersTest {
   (...)
}