Created
May 13, 2011 13:35
-
-
Save mikaelhg/970552 to your computer and use it in GitHub Desktop.
Spring 3.1 MVC unit testing with annotated controllers, JAXB2 marshalling, and @PathVariable annotations
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?xml version="1.0" encoding="UTF-8"?> | |
<beans xmlns="http://www.springframework.org/schema/beans" | |
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | |
xmlns:p="http://www.springframework.org/schema/p" | |
xmlns:context="http://www.springframework.org/schema/context" | |
xmlns:util="http://www.springframework.org/schema/util" | |
xmlns:oxm="http://www.springframework.org/schema/oxm" | |
xmlns:mvc="http://www.springframework.org/schema/mvc" | |
xsi:schemaLocation=" | |
http://www.springframework.org/schema/beans | |
http://www.springframework.org/schema/beans/spring-beans-3.1.xsd | |
http://www.springframework.org/schema/context | |
http://www.springframework.org/schema/context/spring-context-3.1.xsd | |
http://www.springframework.org/schema/util | |
http://www.springframework.org/schema/util/spring-util-3.1.xsd | |
http://www.springframework.org/schema/mvc | |
http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd | |
http://www.springframework.org/schema/oxm | |
http://www.springframework.org/schema/oxm/spring-oxm-3.1.xsd"> | |
<context:component-scan base-package="foo.bar.baz"/> | |
<mvc:annotation-driven> | |
<mvc:message-converters> | |
<!-- no ref support yet, see https://jira.springsource.org/browse/SPR-8252 --> | |
<bean class="org.springframework.http.converter.xml.MarshallingHttpMessageConverter"> | |
<property name="marshaller" ref="marshaller" /> | |
<property name="unmarshaller" ref="marshaller" /> | |
</bean> | |
</mvc:message-converters> | |
</mvc:annotation-driven> | |
<bean id="marshallingHttpMessageConverter" | |
class="org.springframework.http.converter.xml.MarshallingHttpMessageConverter"> | |
<property name="marshaller" ref="marshaller" /> | |
<property name="unmarshaller" ref="marshaller" /> | |
</bean> | |
<oxm:jaxb2-marshaller id="marshaller"> | |
<oxm:class-to-be-bound name="foo.bar.baz.JAXBAnnotatedClass"/> | |
</oxm:jaxb2-marshaller> | |
<bean id="restTemplate" class="org.springframework.web.client.RestTemplate"> | |
<property name="messageConverters"> | |
<util:list> | |
<ref bean="marshallingHttpMessageConverter"/> | |
</util:list> | |
</property> | |
</bean> | |
</beans> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package foo.bar.baz; | |
import javax.servlet.http.HttpServletRequest; | |
import javax.servlet.http.HttpServletResponse; | |
import junit.framework.Assert; | |
import org.junit.Before; | |
import org.junit.Test; | |
import org.junit.runner.RunWith; | |
import org.springframework.beans.factory.annotation.Autowired; | |
import org.springframework.mock.web.MockHttpServletRequest; | |
import org.springframework.mock.web.MockHttpServletResponse; | |
import org.springframework.test.context.ContextConfiguration; | |
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; | |
import org.springframework.web.servlet.HandlerAdapter; | |
import org.springframework.web.servlet.HandlerExecutionChain; | |
import org.springframework.web.servlet.HandlerInterceptor; | |
import org.springframework.web.servlet.HandlerMapping; | |
import org.springframework.web.servlet.ModelAndView; | |
@RunWith(SpringJUnit4ClassRunner.class) | |
@ContextConfiguration({"file:src/main/webapp/WEB-INF/applicationContext.xml", | |
"file:src/main/webapp/WEB-INF/foo-servlet.xml"}) | |
public class ControllerTest { | |
@Autowired | |
private HandlerAdapter handlerAdapter; | |
@Autowired | |
private HandlerMapping handlerMapping; | |
private MockHttpServletRequest request; | |
private MockHttpServletResponse response; | |
private ModelAndView handle(final HttpServletRequest request, final HttpServletResponse response) throws Exception { | |
final HandlerExecutionChain handler = handlerMapping.getHandler(request); | |
Assert.assertNotNull("No handler found for request, check you request mapping", handler); | |
final Object controller = handler.getHandler(); | |
for (final HandlerInterceptor interceptor : handlerMapping.getHandler(request).getInterceptors()) { | |
if (!interceptor.preHandle(request, response, controller)) { | |
return null; | |
} | |
} | |
return handlerAdapter.handle(request, response, controller); | |
} | |
@Before | |
public void setUp() { | |
request = new MockHttpServletRequest(); | |
response = new MockHttpServletResponse(); | |
} | |
@Test | |
public void test1() throws Exception { | |
request.setContentType("application/xml"); | |
request.setMethod("GET"); | |
request.setRequestURI("/test1"); | |
final ModelAndView mav = handle(request, response); | |
Assert.assertTrue(response.getContentAsString().contains("worked")); | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
... | |
<properties> | |
<spring.version>3.1.0.BUILD-SNAPSHOT</spring.version> | |
<joda-time.version>1.6.2</joda-time.version> | |
<slf4j.version>1.6.1</slf4j.version> | |
</properties> | |
<repositories> | |
<repository> | |
<id>org.springframework.maven.snapshot</id> | |
<name>Spring Maven Snapshot Repository</name> | |
<url>http://maven.springframework.org/snapshot</url> | |
<releases> | |
<enabled>false</enabled> | |
</releases> | |
<snapshots> | |
<enabled>true</enabled> | |
</snapshots> | |
</repository> | |
</repositories> | |
<dependencies> | |
<dependency> | |
<groupId>org.springframework</groupId> | |
<artifactId>spring-webmvc</artifactId> | |
<version>${spring.version}</version> | |
<exclusions> | |
<exclusion> | |
<artifactId>commons-logging</artifactId> | |
<groupId>commons-logging</groupId> | |
</exclusion> | |
</exclusions> | |
</dependency> | |
<dependency> | |
<groupId>org.springframework</groupId> | |
<artifactId>spring-jdbc</artifactId> | |
<version>${spring.version}</version> | |
</dependency> | |
<dependency> | |
<groupId>org.springframework</groupId> | |
<artifactId>spring-oxm</artifactId> | |
<version>${spring.version}</version> | |
</dependency> | |
<dependency> | |
<groupId>com.google.guava</groupId> | |
<artifactId>guava</artifactId> | |
<version>r09</version> | |
</dependency> | |
<dependency> | |
<groupId>org.apache.httpcomponents</groupId> | |
<artifactId>httpclient</artifactId> | |
<version>4.1.1</version> | |
<exclusions> | |
<exclusion> | |
<artifactId>commons-logging</artifactId> | |
<groupId>commons-logging</groupId> | |
</exclusion> | |
</exclusions> | |
</dependency> | |
<dependency> | |
<groupId>org.yaml</groupId> | |
<artifactId>snakeyaml</artifactId> | |
<version>1.8</version> | |
</dependency> | |
<dependency> | |
<groupId>joda-time</groupId> | |
<artifactId>joda-time</artifactId> | |
<version>${joda-time.version}</version> | |
</dependency> | |
<dependency> | |
<groupId>org.slf4j</groupId> | |
<artifactId>slf4j-api</artifactId> | |
<version>${slf4j.version}</version> | |
</dependency> | |
<dependency> | |
<groupId>ch.qos.logback</groupId> | |
<artifactId>logback-classic</artifactId> | |
<version>0.9.26</version> | |
</dependency> | |
<dependency> | |
<groupId>org.slf4j</groupId> | |
<artifactId>log4j-over-slf4j</artifactId> | |
<version>${slf4j.version}</version> | |
</dependency> | |
<dependency> | |
<groupId>org.slf4j</groupId> | |
<artifactId>jcl-over-slf4j</artifactId> | |
<version>${slf4j.version}</version> | |
</dependency> | |
<dependency> | |
<groupId>javax.servlet</groupId> | |
<artifactId>servlet-api</artifactId> | |
<version>2.5</version> | |
<scope>provided</scope> | |
</dependency> | |
<dependency> | |
<groupId>javax.servlet.jsp</groupId> | |
<artifactId>jsp-api</artifactId> | |
<version>2.1</version> | |
<scope>provided</scope> | |
</dependency> | |
<dependency> | |
<groupId>javax.servlet</groupId> | |
<artifactId>jstl</artifactId> | |
<version>1.2</version> | |
</dependency> | |
<dependency> | |
<groupId>junit</groupId> | |
<artifactId>junit</artifactId> | |
<version>4.7</version> | |
<scope>test</scope> | |
</dependency> | |
<dependency> | |
<groupId>org.springframework</groupId> | |
<artifactId>spring-test</artifactId> | |
<version>${spring.version}</version> | |
<scope>test</scope> | |
</dependency> | |
</dependencies> | |
... |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment