2013-07-09 77 views
6

我试图运行一个测试来测试Spring MVC控制器。测试编译和运行,但我的问题是,我得到了一个PageNotFound警告:使用MockMvc进行Spring MVC测试

WARN PageNotFound - No mapping found for HTTP request with URI [/] in DispatcherServlet with name '' 

我真的很简单的测试如下:

import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; 
import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print; 
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; 
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.view; 
import org.junit.Before; 
import org.junit.Test; 
import org.junit.runner.RunWith; 
import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.test.context.ContextConfiguration; 
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.setup.MockMvcBuilders; 
import org.springframework.web.context.WebApplicationContext; 

@RunWith(SpringJUnit4ClassRunner.class) 
@WebAppConfiguration 
@ContextConfiguration({ 
    "classpath*:/WEB-INF/applicationContext.xml", 
    "classpath*:/WEB-INF/serviceContext.xml" 
}) 
public class FrontPageControllerTest { 

@Autowired 
private WebApplicationContext ctx; 

private MockMvc mockMvc; 

@Before 
public void init() { 
    this.mockMvc = MockMvcBuilders.webAppContextSetup(this.ctx).build(); 
} 

@Test 
public void frontPageController() throws Exception { 
    this.mockMvc.perform(get("/")) 
    .andDo(print()) 
    .andExpect(status().isOk()) 
    .andExpect(view().name("searchfrontpage"));  
    } 
} 

我100%肯定,我的web应用程序映射到在“/”的首页和在视图上的名称是“searchfrontpage”。

请帮忙!

回答

5

我的ContextConfiguration错了。正确的是:

@ContextConfiguration({ 
    "file:src/main/webapp/WEB-INF/applicationContext.xml", 
    "file:src/main/webapp/WEB-INF/serviceContext.xml" 
}) 

现在一切工作正常。

+0

谢谢,这帮助我得到我的测试工作。 –

+0

@jorgen您能否提供applicationContext.xml和serviceContext.xml文件的内容? – dVaffection

0

解决问题的另一种更简单的方法是改变初始化到这一点:

mockMvc = MockMvcBuilders.standaloneSetup(new FrontPageController()).build(); 
相关问题