Spring3 and REST Integeration(VII)Controller JUnit Test and Mock/Spring Test MVC
Spring Test MVC
I found a spring mvc test framework in github.com, that is nice to have this open source project.
The pom.xml will be changed as follow to get dependencies:
<repositories]]>
<!-- http://maven.springframework.org/snapshot -->
<repository]]>
<id]]>springframe_snapshot_repo</id]]>
<name]]>springframe snapshot repo</name]]>
<url]]>http://maven.springframework.org/snapshot</url]]>
</repository]]>
<!-- http://repository.sonatype.org/content/groups/public/ -->
<repository]]>
<id]]>sonatype_repo</id]]>
<name]]>sonatyperepo</name]]>
<url]]>http://repository.sonatype.org/content/groups/public/</url]]>
</repository]]>
<!-- http://developer.k-int.com/maven2/ -->
<repository]]>
<id]]>k_int_repo</id]]>
<name]]>k intrepo</name]]>
<url]]>http://developer.k-int.com/maven2/</url]]>
</repository]]>
<repository]]>
<id]]>maven_repo1</id]]>
<name]]>maven repo1 Repository</name]]>
<url]]>http://search.maven.org</url]]>
</repository]]>
<repository]]>
<id]]>maven_jboss</id]]>
<name]]>mavenjboss repository</name]]>
<url]]>http://repository.jboss.com</url]]>
</repository]]>
<repository]]>
<id]]>maven_java</id]]>
<name]]>maven java repository</name]]>
<url]]>http://download.java.net/maven/2/</url]]>
</repository]]>
<repository]]>
<id]]>sillycat</id]]>
<name]]>sillycat Repository</name]]>
<url]]>https://sillycat.googlecode.com/svn/repository</url]]>
</repository]]>
<repository]]>
<id]]>alfresco-maven-release</id]]>
<name]]>Alfresco Maven Release Repository</name]]>
<url]]>http://maven.alfresco.com/nexus/content/repositories/releases/</url]]>
</repository]]>
</repositories]]>
<pluginRepositories]]>
<pluginRepository]]>
<id]]>springframe_snapshot_repo</id]]>
<name]]>springframe snapshot repo</name]]>
<url]]>http://maven.springframework.org/snapshot</url]]>
</pluginRepository]]>
<pluginRepository]]>
<id]]>sonatype_repo</id]]>
<name]]>sonatyperepo</name]]>
<url]]>http://repository.sonatype.org/content/groups/public/</url]]>
</pluginRepository]]>
<pluginRepository]]>
<id]]>k_int_repo</id]]>
<name]]>k intrepo</name]]>
<url]]>http://developer.k-int.com/maven2/</url]]>
</pluginRepository]]>
<pluginRepository]]>
<id]]>maven_repo1</id]]>
<name]]>maven repo1 Repository</name]]>
<url]]>http://search.maven.org</url]]>
</pluginRepository]]>
<pluginRepository]]>
<id]]>maven_jboss</id]]>
<name]]>mavenjboss repository</name]]>
<url]]>http://repository.jboss.com</url]]>
</pluginRepository]]>
<pluginRepository]]>
<id]]>maven_java</id]]>
<name]]>maven java repository</name]]>
<url]]>http://download.java.net/maven/2/</url]]>
</pluginRepository]]>
<pluginRepository]]>
<id]]>sillycat</id]]>
<name]]>sillycat Repository</name]]>
<url]]>https://sillycat.googlecode.com/svn/repository</url]]>
</pluginRepository]]>
<pluginRepository]]>
<id]]>alfresco-maven-release</id]]>
<name]]>Alfresco Maven Release Repository</name]]>
<url]]>http://maven.alfresco.com/nexus/content/repositories/releases/</url]]>
</pluginRepository]]>
</pluginRepositories]]>
<dependency]]>
<groupId]]>org.springframework</groupId]]>
<artifactId]]>spring-context</artifactId]]>
<version]]>3.1.1.RELEASE</version]]>
</dependency]]>
<dependency]]>
<groupId]]>org.springframework</groupId]]>
<artifactId]]>spring-web</artifactId]]>
<version]]>3.1.1.RELEASE</version]]>
</dependency]]>
<dependency]]>
<groupId]]>org.springframework</groupId]]>
<artifactId]]>spring-webmvc</artifactId]]>
<version]]>3.1.1.RELEASE</version]]>
</dependency]]>
<dependency]]>
<groupId]]>javax.servlet</groupId]]>
<artifactId]]>servlet-api</artifactId]]>
<version]]>3.0-alpha-1</version]]>
<scope]]>provided</scope]]>
</dependency]]>
<dependency]]>
<groupId]]>org.codehaus.jackson</groupId]]>
<artifactId]]>jackson-core-asl</artifactId]]>
<version]]>1.9.6</version]]>
</dependency]]>
<dependency]]>
<groupId]]>org.codehaus.jackson</groupId]]>
<artifactId]]>jackson-mapper-asl</artifactId]]>
<version]]>1.9.6</version]]>
</dependency]]>
<dependency]]>
<groupId]]>log4j</groupId]]>
<artifactId]]>log4j</artifactId]]>
<version]]>1.2.15</version]]>
</dependency]]>
<dependency]]>
<groupId]]>junit</groupId]]>
<artifactId]]>junit</artifactId]]>
<version]]>4.10</version]]>
<scope]]>test</scope]]>
</dependency]]>
<dependency]]>
<groupId]]>org.springframework</groupId]]>
<artifactId]]>spring-test</artifactId]]>
<version]]>3.1.1.RELEASE</version]]>
<scope]]>test</scope]]>
</dependency]]>
<dependency]]>
<groupId]]>org.springframework</groupId]]>
<artifactId]]>spring-mock</artifactId]]>
<version]]>2.0.8</version]]>
</dependency]]>
<dependency]]>
<groupId]]>org.mockito</groupId]]>
<artifactId]]>mockito-core</artifactId]]>
<version]]>1.9.0</version]]>
</dependency]]>
<dependency]]>
<groupId]]>org.springframework</groupId]]>
<artifactId]]>spring-test-mvc</artifactId]]>
<version]]>1.0.0.BUILD-SNAPSHOT</version]]>
</dependency]]>
<dependency]]>
<groupId]]>com.jayway.jsonpath</groupId]]>
<artifactId]]>json-path</artifactId]]>
<version]]>0.5.6</version]]>
</dependency]]>
<dependency]]>
<groupId]]>org.hamcrest</groupId]]>
<artifactId]]>hamcrest-core</artifactId]]>
<version]]>1.3.RC2</version]]>
</dependency]]>
<dependency]]>
<groupId]]>org.hamcrest</groupId]]>
<artifactId]]>hamcrest-library</artifactId]]>
<version]]>1.3.RC2</version]]>
</dependency]]>
And the test implementation will be as follow:
package com.sillycat.easyrestserver.controller;
import static org.springframework.test.web.server.result.MockMvcResultMatchers.content;
import static org.springframework.test.web.server.result.MockMvcResultMatchers.jsonPath;
import static org.springframework.test.web.server.result.MockMvcResultMatchers.status;
import java.io.IOException;
import javax.servlet.ServletException;
import org.codehaus.jackson.map.ObjectMapper;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.MockitoAnnotations;
import org.springframework.http.MediaType;
import org.springframework.test.web.server.request.MockMvcRequestBuilders;
import org.springframework.test.web.server.setup.MockMvcBuilders;
import com.sillycat.easyrestserver.model.Company;
import com.sillycat.easyrestserver.model.Person;
import com.sillycat.easyrestserver.service.PersonService;
public class PersonControllerTest {
@Mock
private PersonService mockPersonService;
PersonController personController;
Person person;
ObjectMapper jsonMapper;
@Before
public void setUp() throws ServletException, IOException {
MockitoAnnotations.initMocks(this);
personController = new PersonController();
personController.setPersonService(mockPersonService);
person = new Person();
person.setCompany(new Company());
person.setId(3);
person.setPersonName("person3");
jsonMapper = new ObjectMapper();
}
@Test
public void get() throws Exception {
Mockito.when(mockPersonService.get(3)).thenReturn(person);
MockMvcBuilders
.standaloneSetup(personController)
.build()
.perform(
MockMvcRequestBuilders.get("/person/3").accept(
MediaType.APPLICATION_JSON))
.andExpect(status().isOk())
.andExpect(content().type(MediaType.APPLICATION_JSON))
.andExpect(jsonPath("$.personName").value("person3"));
}
@Test
public void add() throws Exception {
person.setId(null);
String jsonPerson = jsonMapper.writeValueAsString(person);
MockMvcBuilders
.standaloneSetup(personController)
.build()
.perform(
MockMvcRequestBuilders.post("/person")
.contentType(MediaType.APPLICATION_JSON)
.accept(MediaType.APPLICATION_JSON)
.body(jsonPerson.getBytes()))
.andExpect(status().isOk())
.andExpect(content().type(MediaType.APPLICATION_JSON))
.andExpect(jsonPath("$.personName").value("person3"));
}
}
references:
Spring3 and REST Integeration(VII)Controller JUnit Test and Mock/Spring Test MVC
猜你喜欢
转载自sillycat.iteye.com/blog/1477472
今日推荐
周排行