2013-07-09 17 views
6

Ich versuche, einen Test zum Testen eines Spring MVC-Controllers auszuführen. Der Test der Kompilierung und läuft, aber mein Problem ist, dass ich eine pagenotfound Warnung bekam:Spring MVC Test mit MockMvc

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

Mein wirklich einfachen Test wie folgt:

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"));  
    } 
} 

Ich bin 100% sicher, dass meine Webapp Karten die Frontpage bei "/" und der Name in der Ansicht ist "Searchfrontpage".

Bitte helfen!

Antwort

5

Meine ContextConfiguration war falsch. Richtig war:

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

Jetzt funktioniert alles gut.

+0

Danke, das hat mir geholfen, Arbeit meine Tests zu bekommen. –

+0

@jorgen Können Sie den Inhalt Ihrer Dateien "applicationContext.xml" und "serviceContext.xml" bereitstellen? – dVaffection

0

Ein weiterer einfacher Weg, um das Problem zu lösen, ist init an, dies zu ändern:

mockMvc = MockMvcBuilders.standaloneSetup(new FrontPageController()).build(); 
Verwandte Themen