Spring MVC Test Framework and migration to Spring 3.2.1

- migrated to Spring 3.2.1
- added hamcrest to the POM so it can be used with the Spring MVC Test
Framework
- Started migrating a JUnit test to Spring MVC Test Framework (at this
stage, it stills doesn't work. It could be because of a conflict with
ContentNegotiatingViewResolver)
This commit is contained in:
Mic 2013-02-15 15:31:04 +08:00
parent e36bff7e7f
commit 057015c14c
3 changed files with 87 additions and 23 deletions

View file

@ -7,26 +7,9 @@
</configSuffixes> </configSuffixes>
<enableImports><![CDATA[false]]></enableImports> <enableImports><![CDATA[false]]></enableImports>
<configs> <configs>
<config>src/main/webapp/WEB-INF/mvc-core-config.xml</config>
<config>src/main/webapp/WEB-INF/mvc-view-config.xml</config>
<config>src/main/resources/spring/dao-config.xml</config>
<config>src/main/resources/spring/datasource-config.xml</config> <config>src/main/resources/spring/datasource-config.xml</config>
<config>src/main/resources/spring/tools-config.xml</config> <config>src/main/webapp/WEB-INF/mvc-view-config.xml</config>
</configs> </configs>
<configSets> <configSets>
<configSet>
<name><![CDATA[config]]></name>
<allowBeanDefinitionOverriding>true</allowBeanDefinitionOverriding>
<incomplete>false</incomplete>
<configs>
<config>src/main/webapp/WEB-INF/mvc-core-config.xml</config>
<config>src/main/webapp/WEB-INF/mvc-view-config.xml</config>
<config>src/main/resources/spring/dao-config.xml</config>
<config>src/main/resources/spring/datasource-config.xml</config>
<config>src/main/resources/spring/tools-config.xml</config>
</configs>
<profiles>
</profiles>
</configSet>
</configSets> </configSets>
</beansProjectDescription> </beansProjectDescription>

39
pom.xml
View file

@ -8,7 +8,7 @@
<packaging>war</packaging> <packaging>war</packaging>
<version>1.0.0-SNAPSHOT</version> <version>1.0.0-SNAPSHOT</version>
<properties> <properties>
<spring.version>3.2.0.RELEASE</spring.version> <spring.version>3.2.1.RELEASE</spring.version>
<slf4j.version>1.7.0</slf4j.version> <slf4j.version>1.7.0</slf4j.version>
<log4j.version>1.2.17</log4j.version> <log4j.version>1.2.17</log4j.version>
<hibernate.version>4.1.4.Final</hibernate.version> <hibernate.version>4.1.4.Final</hibernate.version>
@ -52,6 +52,20 @@
<version>${spring.version}</version> <version>${spring.version}</version>
</dependency> </dependency>
<!-- will be a transitive dependency from Spring 3.2.2 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${spring.version}</version>
</dependency>
<!-- added because this dependency is missing in Spring 3.2.1 (can be removed from Spring 3.2.2) -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${spring.version}</version>
</dependency>
<!-- Logging --> <!-- Logging -->
<dependency> <dependency>
<groupId>org.slf4j</groupId> <groupId>org.slf4j</groupId>
@ -234,6 +248,13 @@
<version>1.1</version> <version>1.1</version>
</dependency> </dependency>
<!-- used for Spring MVC Test framework -->
<dependency>
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest-all</artifactId>
<version>1.3</version>
</dependency>
</dependencies> </dependencies>
<build> <build>
@ -291,5 +312,21 @@
</executions> </executions>
</plugin> </plugin>
</plugins> </plugins>
<testResources>
<testResource>
<directory>src/test/resources</directory>
<filtering>true</filtering>
</testResource>
<testResource>
<directory>src/main/webapp/WEB-INF</directory>
<filtering>true</filtering>
<includes>
<include>**/mvc-*-config.xml</include>
</includes>
</testResource>
</testResources>
</build> </build>
</project> </project>

View file

@ -27,24 +27,67 @@ import java.util.Map;
import org.joda.time.DateTime; import org.joda.time.DateTime;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.samples.petclinic.model.Pet; import org.springframework.samples.petclinic.model.Pet;
import org.springframework.samples.petclinic.model.PetType; import org.springframework.samples.petclinic.model.PetType;
import org.springframework.samples.petclinic.model.Visit; import org.springframework.samples.petclinic.model.Visit;
import org.springframework.test.context.ActiveProfiles;
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.ResultActions;
import org.springframework.test.web.servlet.setup.MockMvcBuilders;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
import org.springframework.web.context.WebApplicationContext;
import static org.hamcrest.Matchers.containsString;
import com.sun.syndication.feed.atom.Entry; import com.sun.syndication.feed.atom.Entry;
import com.sun.syndication.feed.atom.Feed; import com.sun.syndication.feed.atom.Feed;
/** /**
* @author Arjen Poutsma * @author Arjen Poutsma
* @author Michael Isvy
*/ */
@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration
// Spring configuration files that are inside WEB-INF folder can be referenced here because they've been
// added to the classpath inside the Maven pom.xml file (inside <build> <testResources> ... </testResources> </build>)
@ContextConfiguration({"classpath*:mvc-*-config.xml", "classpath*:spring/*-config.xml"})
@ActiveProfiles("jdbc")
public class VisitsAtomViewTest { public class VisitsAtomViewTest {
@Autowired
private WebApplicationContext webApplicationContext;
private MockMvc mockMvc;
@Before
public void setup() {
this.mockMvc = MockMvcBuilders.webAppContextSetup(this.webApplicationContext).build();
}
private VisitsAtomView visitView; private VisitsAtomView visitView;
private Map<String, Object> model; private Map<String, Object> model;
private Feed feed; private Feed feed;
@Test
public void getVisits() throws Exception {
MediaType mediaType = MediaType.APPLICATION_ATOM_XML;
ResultActions actions = this.mockMvc.perform(get("/owners/7/pets/9/visits.atom").accept(mediaType));
actions.andExpect(status().isOk());
actions.andExpect(content().contentType("application/atom+xml"));
//actions.andExpect(content().xml("Pet ClinicService Visits"));
actions.andExpect(xpath("//*").string(containsString("Pet ClinicService Visits")));
}
@Before @Before
public void setUp() { public void setUp() {
visitView = new VisitsAtomView(); visitView = new VisitsAtomView();
@ -74,6 +117,7 @@ public class VisitsAtomViewTest {
} }
@Test @Test
public void buildFeedMetadata() { public void buildFeedMetadata() {
visitView.buildFeedMetadata(model, feed, null); visitView.buildFeedMetadata(model, feed, null);