Integration Testing with Spring MVC.
This commit is contained in:
		
							parent
							
								
									7c34948ade
								
							
						
					
					
						commit
						6fb230546d
					
				
							
								
								
									
										1
									
								
								pom.xml
									
									
									
									
									
								
							
							
						
						
									
										1
									
								
								pom.xml
									
									
									
									
									
								
							| @ -107,6 +107,7 @@ | |||||||
| 		<module>mutation-testing</module> | 		<module>mutation-testing</module> | ||||||
| 		<module>spring-mvc-velocity</module> | 		<module>spring-mvc-velocity</module> | ||||||
|         <module>xstream</module> |         <module>xstream</module> | ||||||
|  | 		<module>spring-mvc-test</module> | ||||||
|     </modules> |     </modules> | ||||||
| 
 | 
 | ||||||
| </project> | </project> | ||||||
|  | |||||||
							
								
								
									
										5
									
								
								spring-mvc-test/README
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								spring-mvc-test/README
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,5 @@ | |||||||
|  | To compile and run the project, execute following command: | ||||||
|  | 
 | ||||||
|  | 	mvn clean install org.codehaus.cargo:cargo-maven2-plugin:run | ||||||
|  | 
 | ||||||
|  | URL: http://localhost:8080/spring-mvc-test/ | ||||||
							
								
								
									
										193
									
								
								spring-mvc-test/pom.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										193
									
								
								spring-mvc-test/pom.xml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,193 @@ | |||||||
|  | <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> | ||||||
|  |     <modelVersion>4.0.0</modelVersion> | ||||||
|  |     <groupId>com.baeldung</groupId> | ||||||
|  |     <artifactId>spring-mvc-test</artifactId> | ||||||
|  |     <version>0.1-SNAPSHOT</version> | ||||||
|  |     <name>spring-mvc-test</name> | ||||||
|  |     <packaging>war</packaging> | ||||||
|  | 	 | ||||||
|  | 	<properties> | ||||||
|  |         <!-- Spring --> | ||||||
|  |         <org.springframework.version>4.3.1.RELEASE</org.springframework.version> | ||||||
|  |         <!-- logging --> | ||||||
|  |         <org.slf4j.version>1.7.21</org.slf4j.version> | ||||||
|  |         <logback.version>1.1.7</logback.version> | ||||||
|  |         <!-- util --> | ||||||
|  | 		<commons-lang3.version>3.4</commons-lang3.version> | ||||||
|  |         <!-- testing --> | ||||||
|  |         <org.hamcrest.version>1.3</org.hamcrest.version> | ||||||
|  |         <junit.version>4.12</junit.version> | ||||||
|  |         <mockito.version>1.10.19</mockito.version> | ||||||
|  |         <httpcore.version>4.4.5</httpcore.version> | ||||||
|  |         <httpclient.version>4.5.2</httpclient.version> | ||||||
|  | 
 | ||||||
|  |         <!-- maven plugins --> | ||||||
|  |         <maven-compiler-plugin.version>3.5.1</maven-compiler-plugin.version> | ||||||
|  |         <maven-war-plugin.version>2.6</maven-war-plugin.version> | ||||||
|  |         <maven-surefire-plugin.version>2.19.1</maven-surefire-plugin.version> | ||||||
|  |         <maven-failsafe-plugin.version>2.19.1</maven-failsafe-plugin.version> | ||||||
|  |         <maven-resources-plugin.version>3.0.1</maven-resources-plugin.version> | ||||||
|  | 		 | ||||||
|  | 		<!-- server --> | ||||||
|  | 		<cargo-maven2-plugin.version>1.5.0</cargo-maven2-plugin.version> | ||||||
|  | 
 | ||||||
|  |     </properties> | ||||||
|  | 	 | ||||||
|  |     <dependencies> | ||||||
|  |         <!-- Spring --> | ||||||
|  |         <dependency> | ||||||
|  |             <groupId>org.springframework</groupId> | ||||||
|  |             <artifactId>spring-web</artifactId> | ||||||
|  |             <version>${org.springframework.version}</version> | ||||||
|  |         </dependency> | ||||||
|  |         <dependency> | ||||||
|  |             <groupId>org.springframework</groupId> | ||||||
|  |             <artifactId>spring-webmvc</artifactId> | ||||||
|  |             <version>${org.springframework.version}</version> | ||||||
|  |         </dependency> | ||||||
|  |         <dependency> | ||||||
|  | 		    <groupId>org.springframework</groupId> | ||||||
|  | 		    <artifactId>spring-websocket</artifactId> | ||||||
|  | 		    <version>${org.springframework.version}</version> | ||||||
|  | 		</dependency> | ||||||
|  | 		<!-- Jackson --> | ||||||
|  | 		<dependency> | ||||||
|  | 			<groupId>com.fasterxml.jackson.core</groupId> | ||||||
|  | 			<artifactId>jackson-core</artifactId> | ||||||
|  | 			<version>2.7.3</version> | ||||||
|  | 		</dependency> | ||||||
|  | 		<dependency> | ||||||
|  | 			<groupId>com.fasterxml.jackson.core</groupId> | ||||||
|  | 			<artifactId>jackson-databind</artifactId> | ||||||
|  | 			<version>2.7.3</version> | ||||||
|  | 		</dependency> | ||||||
|  |         <!-- web --> | ||||||
|  |         <dependency> | ||||||
|  |             <groupId>javax.servlet</groupId> | ||||||
|  |             <artifactId>javax.servlet-api</artifactId> | ||||||
|  |             <version>3.0.1</version> | ||||||
|  |             <scope>provided</scope> | ||||||
|  |         </dependency> | ||||||
|  |         <dependency> | ||||||
|  |             <groupId>javax.servlet</groupId> | ||||||
|  |             <artifactId>jstl</artifactId> | ||||||
|  |             <version>1.2</version> | ||||||
|  |             <scope>runtime</scope> | ||||||
|  |         </dependency> | ||||||
|  |         <!-- logging --> | ||||||
|  |         <dependency> | ||||||
|  |             <groupId>org.slf4j</groupId> | ||||||
|  |             <artifactId>slf4j-api</artifactId> | ||||||
|  |             <version>${org.slf4j.version}</version> | ||||||
|  |         </dependency> | ||||||
|  |         <dependency> | ||||||
|  |             <groupId>org.slf4j</groupId> | ||||||
|  |             <artifactId>slf4j-log4j12</artifactId> | ||||||
|  |             <version>${org.slf4j.version}</version> | ||||||
|  |         </dependency> | ||||||
|  |         <!-- test scoped --> | ||||||
|  |         <dependency> | ||||||
|  |             <groupId>junit</groupId> | ||||||
|  |             <artifactId>junit</artifactId> | ||||||
|  |             <version>${junit.version}</version> | ||||||
|  |             <scope>test</scope> | ||||||
|  |         </dependency> | ||||||
|  |         <dependency> | ||||||
|  |             <groupId>org.mockito</groupId> | ||||||
|  |             <artifactId>mockito-core</artifactId> | ||||||
|  |             <version>${mockito.version}</version> | ||||||
|  |             <scope>test</scope> | ||||||
|  |         </dependency> | ||||||
|  |         <dependency> | ||||||
|  | 		    <groupId>com.jayway.jsonpath</groupId> | ||||||
|  | 		    <artifactId>json-path</artifactId> | ||||||
|  | 		    <version>2.2.0</version> | ||||||
|  | 		</dependency> | ||||||
|  |         <dependency> | ||||||
|  |             <groupId>org.springframework</groupId> | ||||||
|  |             <artifactId>spring-test</artifactId> | ||||||
|  |             <version>${org.springframework.version}</version> | ||||||
|  |             <scope>test</scope> | ||||||
|  |         </dependency> | ||||||
|  |     </dependencies> | ||||||
|  | 
 | ||||||
|  |     <build> | ||||||
|  |         <finalName>spring-mvc-test</finalName> | ||||||
|  |         <resources> | ||||||
|  |             <resource> | ||||||
|  |                 <directory>src/main/resources</directory> | ||||||
|  |                 <filtering>true</filtering> | ||||||
|  |             </resource> | ||||||
|  |         </resources> | ||||||
|  | 
 | ||||||
|  |         <plugins> | ||||||
|  |             <plugin> | ||||||
|  |                 <groupId>org.apache.maven.plugins</groupId> | ||||||
|  |                 <artifactId>maven-compiler-plugin</artifactId> | ||||||
|  |                 <version>${maven-compiler-plugin.version}</version> | ||||||
|  |                 <configuration> | ||||||
|  |                     <source>1.8</source> | ||||||
|  |                     <target>1.8</target> | ||||||
|  |                 </configuration> | ||||||
|  |             </plugin> | ||||||
|  | 
 | ||||||
|  |             <plugin> | ||||||
|  |                 <artifactId>maven-resources-plugin</artifactId> | ||||||
|  |                 <version>2.7</version> | ||||||
|  |             </plugin> | ||||||
|  | 
 | ||||||
|  |             <plugin> | ||||||
|  |                 <groupId>org.apache.maven.plugins</groupId> | ||||||
|  |                 <artifactId>maven-war-plugin</artifactId> | ||||||
|  |                 <version>${maven-war-plugin.version}</version> | ||||||
|  |                 <configuration> | ||||||
|  |                     <failOnMissingWebXml>false</failOnMissingWebXml> | ||||||
|  |                 </configuration> | ||||||
|  |             </plugin> | ||||||
|  |             <plugin> | ||||||
|  |                 <groupId>org.apache.maven.plugins</groupId> | ||||||
|  |                 <artifactId>maven-surefire-plugin</artifactId> | ||||||
|  |                 <version>${maven-surefire-plugin.version}</version> | ||||||
|  |                 <configuration> | ||||||
|  |           			<excludes> | ||||||
|  |             			<exclude>**/*IntegrationTest.java</exclude> | ||||||
|  |           			</excludes> | ||||||
|  |         		</configuration> | ||||||
|  |             </plugin> | ||||||
|  |             <plugin> | ||||||
|  |                 <groupId>org.apache.maven.plugins</groupId> | ||||||
|  |                 <artifactId>maven-failsafe-plugin</artifactId> | ||||||
|  |                 <version>${maven-failsafe-plugin.version}</version> | ||||||
|  |                 <configuration> | ||||||
|  |                     <includes> | ||||||
|  |                         <include>**/*IntegrationTest.java</include> | ||||||
|  |                     </includes> | ||||||
|  |                 </configuration> | ||||||
|  |                 <executions> | ||||||
|  |           			<execution> | ||||||
|  |             			<goals> | ||||||
|  |               				<goal>integration-test</goal> | ||||||
|  |               				<goal>verify</goal> | ||||||
|  |             			</goals> | ||||||
|  |           			</execution> | ||||||
|  |         		</executions> | ||||||
|  |             </plugin> | ||||||
|  |             <plugin> | ||||||
|  |                 <groupId>org.codehaus.cargo</groupId> | ||||||
|  |                 <artifactId>cargo-maven2-plugin</artifactId> | ||||||
|  |                 <version>${cargo-maven2-plugin.version}</version> | ||||||
|  |                 <configuration> | ||||||
|  |                     <container> | ||||||
|  |                         <containerId>jetty8x</containerId> | ||||||
|  |                         <type>embedded</type> | ||||||
|  |                     </container> | ||||||
|  |                     <configuration> | ||||||
|  |                         <properties> | ||||||
|  |                             <cargo.servlet.port>8080</cargo.servlet.port> | ||||||
|  |                         </properties> | ||||||
|  |                     </configuration> | ||||||
|  |                 </configuration> | ||||||
|  |             </plugin> | ||||||
|  |         </plugins> | ||||||
|  |     </build> | ||||||
|  | </project> | ||||||
| @ -0,0 +1,36 @@ | |||||||
|  | package com.baeldung.spring; | ||||||
|  | 
 | ||||||
|  | import org.springframework.context.annotation.Bean; | ||||||
|  | import org.springframework.context.annotation.ComponentScan; | ||||||
|  | import org.springframework.context.annotation.Configuration; | ||||||
|  | import org.springframework.web.servlet.ViewResolver; | ||||||
|  | import org.springframework.web.servlet.config.annotation.EnableWebMvc; | ||||||
|  | import org.springframework.web.servlet.config.annotation.ViewControllerRegistry; | ||||||
|  | import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; | ||||||
|  | import org.springframework.web.servlet.view.InternalResourceViewResolver; | ||||||
|  | import org.springframework.web.servlet.view.JstlView; | ||||||
|  | 
 | ||||||
|  | @EnableWebMvc | ||||||
|  | @Configuration | ||||||
|  | @ComponentScan(basePackages = {"com.baeldung.spring.controller"}) | ||||||
|  | public class ApplicationConfig extends WebMvcConfigurerAdapter { | ||||||
|  | 
 | ||||||
|  | 	public ApplicationConfig() { | ||||||
|  | 		super(); | ||||||
|  | 	} | ||||||
|  | 	 | ||||||
|  | 	@Override | ||||||
|  |     public void addViewControllers(final ViewControllerRegistry registry) { | ||||||
|  |         super.addViewControllers(registry); | ||||||
|  |         registry.addViewController("/").setViewName("index"); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     @Bean | ||||||
|  |     public ViewResolver viewResolver() { | ||||||
|  |     	final InternalResourceViewResolver bean = new InternalResourceViewResolver(); | ||||||
|  |         bean.setViewClass(JstlView.class); | ||||||
|  |         bean.setPrefix("/WEB-INF/jsp/"); | ||||||
|  |         bean.setSuffix(".jsp"); | ||||||
|  |         return bean; | ||||||
|  |     } | ||||||
|  | } | ||||||
| @ -0,0 +1,19 @@ | |||||||
|  | package com.baeldung.spring.bean; | ||||||
|  | 
 | ||||||
|  | public class Greeting { | ||||||
|  | 	private int id; | ||||||
|  | 	private String message; | ||||||
|  | 	 | ||||||
|  | 	public int getId() { | ||||||
|  | 		return id; | ||||||
|  | 	} | ||||||
|  | 	public void setId(int id) { | ||||||
|  | 		this.id = id; | ||||||
|  | 	} | ||||||
|  | 	public String getMessage() { | ||||||
|  | 		return message; | ||||||
|  | 	} | ||||||
|  | 	public void setMessage(String message) { | ||||||
|  | 		this.message = message; | ||||||
|  | 	} | ||||||
|  | } | ||||||
| @ -0,0 +1,64 @@ | |||||||
|  | package com.baeldung.spring.controller; | ||||||
|  | 
 | ||||||
|  | import org.springframework.stereotype.Controller; | ||||||
|  | import org.springframework.web.bind.annotation.PathVariable; | ||||||
|  | import org.springframework.web.bind.annotation.RequestMapping; | ||||||
|  | import org.springframework.web.bind.annotation.RequestMethod; | ||||||
|  | import org.springframework.web.bind.annotation.RequestParam; | ||||||
|  | import org.springframework.web.bind.annotation.ResponseBody; | ||||||
|  | 
 | ||||||
|  | import com.baeldung.spring.bean.Greeting; | ||||||
|  | 
 | ||||||
|  | @Controller | ||||||
|  | public class GreetController { | ||||||
|  | 	 | ||||||
|  | 	@RequestMapping(value = "/homePage", method = RequestMethod.GET) | ||||||
|  | 	public String index() { | ||||||
|  | 		return "index"; | ||||||
|  | 	} | ||||||
|  | 	 | ||||||
|  | 	@RequestMapping(value = "/greet", method = RequestMethod.GET, produces = "application/json") | ||||||
|  | 	@ResponseBody | ||||||
|  | 	public Greeting greet() { | ||||||
|  | 		Greeting greeting = new Greeting(); | ||||||
|  | 		greeting.setId(1); | ||||||
|  | 		greeting.setMessage("Hello World!!!"); | ||||||
|  | 		return greeting; | ||||||
|  | 	} | ||||||
|  | 	 | ||||||
|  | 	@RequestMapping(value = "/greetWithPathVariable/{name}", method = RequestMethod.GET, produces = "application/json") | ||||||
|  | 	@ResponseBody | ||||||
|  | 	public Greeting greetWithPathVariable(@PathVariable("name") String name) { | ||||||
|  | 		Greeting greeting = new Greeting(); | ||||||
|  | 		greeting.setId(1); | ||||||
|  | 		greeting.setMessage("Hello World " + name + "!!!"); | ||||||
|  | 		return greeting; | ||||||
|  | 	} | ||||||
|  | 	 | ||||||
|  | 	@RequestMapping(value = "/greetWithQueryVariable", method = RequestMethod.GET, produces = "application/json") | ||||||
|  | 	@ResponseBody | ||||||
|  | 	public Greeting greetWithQueryVariable(@RequestParam("name") String name) { | ||||||
|  | 		Greeting greeting = new Greeting(); | ||||||
|  | 		greeting.setId(1); | ||||||
|  | 		greeting.setMessage("Hello World " + name + "!!!"); | ||||||
|  | 		return greeting; | ||||||
|  | 	} | ||||||
|  | 	 | ||||||
|  | 	@RequestMapping(value = "/greetWithPost", method = RequestMethod.POST, produces = "application/json") | ||||||
|  | 	@ResponseBody | ||||||
|  | 	public Greeting greetWithPost() { | ||||||
|  | 		Greeting greeting = new Greeting(); | ||||||
|  | 		greeting.setId(1); | ||||||
|  | 		greeting.setMessage("Hello World!!!"); | ||||||
|  | 		return greeting; | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	@RequestMapping(value = "/greetWithPostAndFormData", method = RequestMethod.POST, produces = "application/json") | ||||||
|  | 	@ResponseBody | ||||||
|  | 	public Greeting greetWithPostAndFormData(@RequestParam("id") int id, @RequestParam("name") String name) { | ||||||
|  | 		Greeting greeting = new Greeting(); | ||||||
|  | 		greeting.setId(id); | ||||||
|  | 		greeting.setMessage("Hello World " + name + "!!!"); | ||||||
|  | 		return greeting; | ||||||
|  | 	} | ||||||
|  | } | ||||||
							
								
								
									
										18
									
								
								spring-mvc-test/src/main/resources/logback.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								spring-mvc-test/src/main/resources/logback.xml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,18 @@ | |||||||
|  | <configuration> | ||||||
|  | 	<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> | ||||||
|  | 		<encoder> | ||||||
|  | 			<pattern>web - %date [%thread] %-5level %logger{36} - %message%n | ||||||
|  | 			</pattern> | ||||||
|  | 		</encoder> | ||||||
|  | 	</appender> | ||||||
|  | 
 | ||||||
|  | 	<logger name="org.springframework" level="WARN" /> | ||||||
|  | 	<logger name="org.springframework.transaction" level="WARN" /> | ||||||
|  | 
 | ||||||
|  | 	<!-- in order to debug some marshalling issues, this needs to be TRACE --> | ||||||
|  | 	<logger name="org.springframework.web.servlet.mvc" level="TRACE" /> | ||||||
|  | 
 | ||||||
|  | 	<root level="INFO"> | ||||||
|  | 		<appender-ref ref="STDOUT" /> | ||||||
|  | 	</root> | ||||||
|  | </configuration> | ||||||
							
								
								
									
										5
									
								
								spring-mvc-test/src/main/webapp/WEB-INF/jsp/index.jsp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								spring-mvc-test/src/main/webapp/WEB-INF/jsp/index.jsp
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,5 @@ | |||||||
|  | <html> | ||||||
|  | 	<body> | ||||||
|  | 		<h1>Spring MVC - Integration Testing</h1> | ||||||
|  | 	</body> | ||||||
|  | </html> | ||||||
| @ -0,0 +1,5 @@ | |||||||
|  | <?xml version="1.0" encoding="UTF-8"?> | ||||||
|  | <beans xmlns="http://www.springframework.org/schema/beans" | ||||||
|  | 	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||||||
|  |   xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd" > | ||||||
|  | </beans> | ||||||
							
								
								
									
										34
									
								
								spring-mvc-test/src/main/webapp/WEB-INF/web.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								spring-mvc-test/src/main/webapp/WEB-INF/web.xml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,34 @@ | |||||||
|  | <?xml version="1.0" encoding="UTF-8"?> | ||||||
|  | <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" | ||||||
|  |          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||||||
|  |          xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" | ||||||
|  |          version="3.1"> | ||||||
|  | 
 | ||||||
|  |     <display-name>Spring MVC - Integration Testing</display-name> | ||||||
|  | 
 | ||||||
|  |     <context-param> | ||||||
|  |         <param-name>contextClass</param-name> | ||||||
|  |         <param-value> | ||||||
|  |         	org.springframework.web.context.support.AnnotationConfigWebApplicationContext | ||||||
|  |       	</param-value> | ||||||
|  |     </context-param> | ||||||
|  |     <context-param> | ||||||
|  |         <param-name>contextConfigLocation</param-name> | ||||||
|  |         <param-value>com.baeldung.spring</param-value> | ||||||
|  |     </context-param> | ||||||
|  |      | ||||||
|  |     <listener> | ||||||
|  |         <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> | ||||||
|  |     </listener> | ||||||
|  | 
 | ||||||
|  |     <servlet> | ||||||
|  |         <servlet-name>spring</servlet-name> | ||||||
|  |         <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> | ||||||
|  |         <load-on-startup>1</load-on-startup> | ||||||
|  |     </servlet> | ||||||
|  |      | ||||||
|  |     <servlet-mapping> | ||||||
|  |         <servlet-name>spring</servlet-name> | ||||||
|  |         <url-pattern>/</url-pattern> | ||||||
|  |     </servlet-mapping> | ||||||
|  | </web-app> | ||||||
| @ -0,0 +1,114 @@ | |||||||
|  | package com.baeldung.spring.controller; | ||||||
|  | 
 | ||||||
|  | import org.junit.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.MockServletContext; | ||||||
|  | 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.MvcResult; | ||||||
|  | import org.springframework.test.web.servlet.result.MockMvcResultMatchers; | ||||||
|  | import org.springframework.test.web.servlet.setup.MockMvcBuilders; | ||||||
|  | 
 | ||||||
|  | import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print; | ||||||
|  | import org.springframework.web.context.WebApplicationContext; | ||||||
|  | 
 | ||||||
|  | import com.baeldung.spring.ApplicationConfig; | ||||||
|  | 
 | ||||||
|  | import org.springframework.test.web.servlet.request.MockMvcRequestBuilders; | ||||||
|  | 
 | ||||||
|  | import javax.servlet.ServletContext; | ||||||
|  | 
 | ||||||
|  | @RunWith(SpringJUnit4ClassRunner.class) | ||||||
|  | @WebAppConfiguration | ||||||
|  | @ContextConfiguration(classes = { ApplicationConfig.class }) | ||||||
|  | public class GreetControllerIntegrationTest { | ||||||
|  | 
 | ||||||
|  | 	@Autowired | ||||||
|  | 	private WebApplicationContext wac; | ||||||
|  | 
 | ||||||
|  | 	private MockMvc mockMvc; | ||||||
|  | 
 | ||||||
|  | 	@Before | ||||||
|  | 	public void setup() throws Exception { | ||||||
|  | 		this.mockMvc = MockMvcBuilders.webAppContextSetup(this.wac) | ||||||
|  | //				.alwaysExpect(MockMvcResultMatchers.status().isOk()) | ||||||
|  | 				.build(); | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	@Test | ||||||
|  | 	public void verifyWac() { | ||||||
|  | 		ServletContext servletContext = wac.getServletContext(); | ||||||
|  | 		Assert.assertNotNull(servletContext); | ||||||
|  | 		Assert.assertTrue(servletContext instanceof MockServletContext); | ||||||
|  | 		Assert.assertNotNull(wac.getBean("greetController")); | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	@Test | ||||||
|  | 	public void verifyIndexJspViewName() throws Exception { | ||||||
|  | 		this.mockMvc | ||||||
|  | 					.perform(MockMvcRequestBuilders.get("/homePage")) | ||||||
|  | 					.andDo(print()) | ||||||
|  | 					.andExpect(MockMvcResultMatchers.view().name("index")); | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	@Test | ||||||
|  | 	public void verifyGreet() throws Exception { | ||||||
|  | 		MvcResult mvcResult = this.mockMvc | ||||||
|  | 										.perform(MockMvcRequestBuilders.get("/greet")) | ||||||
|  | 										.andDo(print()) | ||||||
|  | 										.andExpect(MockMvcResultMatchers.status().isOk()) | ||||||
|  | 										.andExpect(MockMvcResultMatchers.jsonPath("$.message").value("Hello World!!!")) | ||||||
|  | 										.andReturn(); | ||||||
|  | 		Assert.assertEquals("application/json;charset=UTF-8", mvcResult.getResponse().getContentType()); | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	@Test | ||||||
|  | 	public void verifyGreetWithPathVariable() throws Exception { | ||||||
|  | 		this.mockMvc.perform(MockMvcRequestBuilders.get("/greetWithPathVariable/John")).andDo(print()).andExpect(MockMvcResultMatchers.status().isOk()) | ||||||
|  | 				.andExpect(MockMvcResultMatchers.content().contentType("application/json;charset=UTF-8")) | ||||||
|  | 				.andExpect(MockMvcResultMatchers.jsonPath("$.message").value("Hello World John!!!")); | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	@Test | ||||||
|  | 	public void verifyGreetWithPathVariable_2() throws Exception { | ||||||
|  | 		this.mockMvc | ||||||
|  | 				.perform(MockMvcRequestBuilders.get("/greetWithPathVariable/{name}", "Doe")) | ||||||
|  | 				.andDo(print()) | ||||||
|  | 				.andExpect(MockMvcResultMatchers.status().isOk()) | ||||||
|  | 				.andExpect(MockMvcResultMatchers.content().contentType("application/json;charset=UTF-8")) | ||||||
|  | 				.andExpect(MockMvcResultMatchers.jsonPath("$.message").value("Hello World Doe!!!")); | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	@Test | ||||||
|  | 	public void verifyGreetWithQueryVariable() throws Exception { | ||||||
|  | 		this.mockMvc | ||||||
|  | 				.perform(MockMvcRequestBuilders.get("/greetWithQueryVariable").param("name", "John Doe")) | ||||||
|  | 				.andDo(print()) | ||||||
|  | 				.andExpect(MockMvcResultMatchers.status().isOk()).andExpect(MockMvcResultMatchers.content().contentType("application/json;charset=UTF-8")) | ||||||
|  | 				.andExpect(MockMvcResultMatchers.jsonPath("$.message").value("Hello World John Doe!!!")); | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	@Test | ||||||
|  | 	public void verifyGreetWithPost() throws Exception { | ||||||
|  | 		this.mockMvc | ||||||
|  | 				.perform(MockMvcRequestBuilders.post("/greetWithPost")) | ||||||
|  | 				.andDo(print()) | ||||||
|  | 				.andExpect(MockMvcResultMatchers.status().isOk()) | ||||||
|  | 				.andExpect(MockMvcResultMatchers.content().contentType("application/json;charset=UTF-8")) | ||||||
|  | 				.andExpect(MockMvcResultMatchers.jsonPath("$.message").value("Hello World!!!")); | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	@Test | ||||||
|  | 	public void verifyGreetWithPostAndFormData() throws Exception { | ||||||
|  | 		this.mockMvc | ||||||
|  | 				.perform(MockMvcRequestBuilders.post("/greetWithPostAndFormData").param("id", "1").param("name", "John Doe")) | ||||||
|  | 				.andDo(print()).andExpect(MockMvcResultMatchers.status().isOk()) | ||||||
|  | 				.andExpect(MockMvcResultMatchers.content().contentType("application/json;charset=UTF-8")) | ||||||
|  | 				.andExpect(MockMvcResultMatchers.jsonPath("$.message").value("Hello World John Doe!!!")).andExpect(MockMvcResultMatchers.jsonPath("$.id").value(1)); | ||||||
|  | 	} | ||||||
|  | } | ||||||
| @ -0,0 +1,83 @@ | |||||||
|  | package com.baeldung.spring.controller; | ||||||
|  | 
 | ||||||
|  | import org.junit.Before; | ||||||
|  | import org.junit.Test; | ||||||
|  | import org.springframework.test.web.servlet.MockMvc; | ||||||
|  | import org.springframework.test.web.servlet.request.MockMvcRequestBuilders; | ||||||
|  | import org.springframework.test.web.servlet.result.MockMvcResultMatchers; | ||||||
|  | import org.springframework.test.web.servlet.setup.MockMvcBuilders; | ||||||
|  | 
 | ||||||
|  | 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.content; | ||||||
|  | import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath; | ||||||
|  | import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; | ||||||
|  | import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.view; | ||||||
|  | 
 | ||||||
|  | public class GreetControllerTest { | ||||||
|  | 	 | ||||||
|  | 	private MockMvc mockMvc; | ||||||
|  | 	 | ||||||
|  | 	@Before | ||||||
|  | 	public void setup() { | ||||||
|  | 		this.mockMvc = MockMvcBuilders.standaloneSetup(new GreetController()).build(); | ||||||
|  | 	} | ||||||
|  | 	 | ||||||
|  | 	@Test | ||||||
|  | 	public void verifyIndexJspViewName() throws Exception { | ||||||
|  | 		this.mockMvc.perform(get("/homePage")) | ||||||
|  | 				.andExpect(view().name("index")); | ||||||
|  | 	} | ||||||
|  | 	 | ||||||
|  | 	@Test | ||||||
|  | 	public void verifyGreet() throws Exception { | ||||||
|  | 		this.mockMvc.perform(get("/greet")) | ||||||
|  | 				.andExpect(status().isOk()) | ||||||
|  | 				.andExpect(content().contentType("application/json;charset=UTF-8")) | ||||||
|  | 				.andExpect(jsonPath("$.message").value("Hello World!!!")); | ||||||
|  | 	} | ||||||
|  | 	 | ||||||
|  | 	@Test | ||||||
|  | 	public void verifyGreetWithPathVariable() throws Exception { | ||||||
|  | 		this.mockMvc.perform(get("/greetWithPathVariable/John")) | ||||||
|  | 				.andExpect(status().isOk()) | ||||||
|  | 				.andExpect(content().contentType("application/json;charset=UTF-8")) | ||||||
|  | 				.andExpect(jsonPath("$.message").value("Hello World John!!!")); | ||||||
|  | 	} | ||||||
|  | 	 | ||||||
|  | 	@Test | ||||||
|  | 	public void verifyGreetWithPathVariable_2() throws Exception { | ||||||
|  | 		this.mockMvc.perform(get("/greetWithPathVariable/{name}","Doe")) | ||||||
|  | 				.andExpect(status().isOk()) | ||||||
|  | 				.andExpect(content().contentType("application/json;charset=UTF-8")) | ||||||
|  | 				.andExpect(jsonPath("$.message").value("Hello World Doe!!!")); | ||||||
|  | 	} | ||||||
|  | 	 | ||||||
|  | 	@Test | ||||||
|  | 	public void verifyGreetWithQueryVariable() throws Exception { | ||||||
|  | 		this.mockMvc | ||||||
|  | 				.perform(MockMvcRequestBuilders.get("/greetWithQueryVariable").param("name", "John Doe")) | ||||||
|  | 				.andDo(print()) | ||||||
|  | 				.andExpect(MockMvcResultMatchers.status().isOk()).andExpect(MockMvcResultMatchers.content().contentType("application/json;charset=UTF-8")) | ||||||
|  | 				.andExpect(MockMvcResultMatchers.jsonPath("$.message").value("Hello World John Doe!!!")); | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	@Test | ||||||
|  | 	public void verifyGreetWithPost() throws Exception { | ||||||
|  | 		this.mockMvc | ||||||
|  | 				.perform(MockMvcRequestBuilders.post("/greetWithPost")) | ||||||
|  | 				.andDo(print()) | ||||||
|  | 				.andExpect(MockMvcResultMatchers.status().isOk()) | ||||||
|  | 				.andExpect(MockMvcResultMatchers.content().contentType("application/json;charset=UTF-8")) | ||||||
|  | 				.andExpect(MockMvcResultMatchers.jsonPath("$.message").value("Hello World!!!")); | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	@Test | ||||||
|  | 	public void verifyGreetWithPostAndFormData() throws Exception { | ||||||
|  | 		this.mockMvc | ||||||
|  | 				.perform(MockMvcRequestBuilders.post("/greetWithPostAndFormData").param("id", "1").param("name", "John Doe")) | ||||||
|  | 				.andDo(print()).andExpect(MockMvcResultMatchers.status().isOk()) | ||||||
|  | 				.andExpect(MockMvcResultMatchers.content().contentType("application/json;charset=UTF-8")) | ||||||
|  | 				.andExpect(MockMvcResultMatchers.jsonPath("$.message").value("Hello World John Doe!!!")).andExpect(MockMvcResultMatchers.jsonPath("$.id").value(1)); | ||||||
|  | 	} | ||||||
|  | } | ||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user