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>spring-mvc-velocity</module> | ||||
|         <module>xstream</module> | ||||
| 		<module>spring-mvc-test</module> | ||||
|     </modules> | ||||
| 
 | ||||
| </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