This code is a variation of the code used in JUnit Testing Spring Service and DAO (with In-Memory Database). It is available from Gihut in the Spring-MVC-JUnit-Testing directory.
Test Configuration Classes
These are identical to those required for Service and DAO testing.
Controller
Our controller:
@Controller
public class MyController {
@Autowired
private MyService myService;
@RequestMapping(value = '/')
public String home(Model model) {
return 'index';
}
@RequestMapping(value = '/roundtrip')
public String persistenceStatus(Model model) {
MilliTimeItem retr = myService.createAndRetrieve();
model.addAttribute('RoundTrip', retr);
return 'roundtrip';
}
}
Controller Testing
The following creates an instance of MockMvc to test simulated user requests:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes={ JpaTestConfig.class, TestConfig.class })
public class MyControllerTest {
private MockMvc mockMvc;
@Before
public void setup() {
mockMvc = MockMvcBuilders
.annotationConfigSetup(JpaTestConfig.class, TestConfig.class)
.build();
}
@Test
public void testHome() throws Exception {
mockMvc.perform(get('/'))
.andExpect(status().isOk())
.andExpect(forwardedUrl('WEB-INF/pages/index.jsp'));
}
@Test
public void testPersistenceStatus() throws Exception {
mockMvc.perform(get('/roundtrip'))
.andExpect(status().isOk())
.andExpect(forwardedUrl('WEB-INF/pages/roundtrip.jsp'))
.andExpect(model().attributeExists('RoundTrip'));
}
}The / request tests the returned status and the URL mapping to the JSP page. The /roundtrip request makes sure the returned model does contain the Roundtrip attribute.
Dependencies
The Spring MVC test artifact is not yet available from mavenβs central repository. It should be obtained from another repository:
<repositories> <repository> <id>spring.test-mvc</id> <url>http://repo.springsource.org/libs-milestone</url> </repository> </repositories>
The required dependency are:
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-test-mvc</artifactId> <version>1.0.0.M1</version> <scope>test</scope> </dependency> <dependency> <groupId>org.hamcrest</groupId> <artifactId>hamcrest-library</artifactId> <version>1.3</version> <scope>test</scope> </dependency>
More Spring related posts here.
Reference: Spring MVC Controller JUnit Testing from our JCG partner Jerome Versrynge at the Technical Notes blog.
Thank you!
We will contact you soon.
Jerome VersryngeOctober 5th, 2012Last Updated: October 22nd, 2012

This site uses Akismet to reduce spam. Learn how your comment data is processed.