`
hpgary
  • 浏览: 82140 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Spring Boot Mvc 单元测试

    博客分类:
  • Java
阅读更多

1、开发 都是需要保存测试代码的,mvc也不例外,都需要写测试代码,下面写了一个简单的mvc 但愿测试的代码.

 

import org.junit.Test;
import org.junit.runner.RunWith;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.mock.web.MockHttpSession;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.MvcResult;

import static org.assertj.core.api.Assertions.assertThat;
import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestBuilders.formLogin;
import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.csrf;
import static org.springframework.security.test.web.servlet.response.SecurityMockMvcResultMatchers.authenticated;
import static org.springframework.security.test.web.servlet.response.SecurityMockMvcResultMatchers.unauthenticated;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;

/**
 *
 * @author Joe Grandja
 */
//Junit 启动类
@RunWith(SpringJUnit4ClassRunner.class)
//Spring Boot Test自动配置
@SpringBootTest
//自动配置,注入 Mock Mvc
@AutoConfigureMockMvc
public class HelloWorldApplicationTests {

	@Autowired
	private MockMvc mockMvc;

	@Test
	public void accessUnprotected() throws Exception {
		// @formatter:off
		this.mockMvc.perform(get("/index"))
				.andExpect(status().isOk());
		// @formatter:on
	}

	@Test
	public void accessProtectedRedirectsToLogin() throws Exception {
		// @formatter:off
		MvcResult mvcResult = this.mockMvc.perform(get("/user/index"))
				.andExpect(status().is3xxRedirection())
				.andReturn();
		// @formatter:on

		assertThat(mvcResult.getResponse().getRedirectedUrl()).endsWith("/login");
	}

	@Test
	public void loginUser() throws Exception {
		// @formatter:off
		this.mockMvc.perform(formLogin().user("user").password("password"))
				.andExpect(authenticated());
		// @formatter:on
	}

	@Test
	public void loginInvalidUser() throws Exception {
		// @formatter:off
		this.mockMvc.perform(formLogin().user("invalid").password("invalid"))
				.andExpect(unauthenticated())
				.andExpect(status().is3xxRedirection());
		// @formatter:on
	}

	@Test
	public void loginUserAccessProtected() throws Exception {
		// @formatter:off
		MvcResult mvcResult = this.mockMvc.perform(formLogin().user("user").password("password"))
				.andExpect(authenticated()).andReturn();
		// @formatter:on

		MockHttpSession httpSession = (MockHttpSession) mvcResult.getRequest().getSession(false);

		// @formatter:off
		this.mockMvc.perform(get("/user/index").session(httpSession))
				.andExpect(status().isOk());
		// @formatter:on
	}

	@Test
	public void loginUserValidateLogout() throws Exception {
		// @formatter:off
		MvcResult mvcResult = this.mockMvc.perform(formLogin().user("user").password("password"))
				.andExpect(authenticated()).andReturn();
		// @formatter:on

		MockHttpSession httpSession = (MockHttpSession) mvcResult.getRequest().getSession(false);

		// @formatter:off
		this.mockMvc.perform(post("/logout").with(csrf()).session(httpSession))
				.andExpect(unauthenticated());
		this.mockMvc.perform(get("/user/index").session(httpSession))
				.andExpect(unauthenticated())
				.andExpect(status().is3xxRedirection());
		// @formatter:on
	}
}

 

分享到:
评论

相关推荐

    Spring Boot中的单元测试.pdf

    在Spring Boot中,单元测试是确保代码质量和可维护性的重要组成部分。通过单元测试,开发者能够独立验证代码的各个部分,确保它们按照预期工作,并在修改代码后快速发现潜在问题。Spring Boot为此提供了一系列便利...

    07. Spring Boot单元测试

    在Spring Boot框架中,单元测试是一项至关重要的任务,它能够帮助开发者确保代码的正确性和可靠性。Spring Boot提供了方便的工具和库,使得编写和执行单元测试变得简单高效。本章节我们将深入探讨Spring Boot中的...

    spring mvc的简单单元测试

    Spring MVC 是一个强大的Java web开发框架,用于构建可维护、可扩展的...总之,通过正确使用JUnit、Mockito、Spring Test以及MockMVC,我们可以编写出全面、有效的Spring MVC单元测试,确保代码质量并降低潜在的bug。

    spring boot jsp mvc jpa hibernate mysql 示例 sample

    1. **Spring Boot MVC**:Spring Boot 提供了对 Spring MVC 的集成,使得构建 Web 应用变得简单。MVC(Model-View-Controller)设计模式是 Web 开发中常用的一种架构模式,用于分离业务逻辑、数据模型和用户界面。在...

    spring boot MVC

    Spring Boot MVC 是一个基于Spring框架的高度简化开发的工具,它整合了Spring MVC和Spring的核心特性,使得构建Web应用变得更加便捷。在"spring boot 携带token登录,token拦截器,增删改查功能"这个描述中,我们...

    spring bootMVC+maven+mybatis

    Spring Boot MVC + Maven + MyBatis 是一个常见的Java Web开发技术栈,用于构建高效、简洁且可独立运行的微服务应用。在这个项目中,我们主要关注三个核心组件:Spring Boot、MVC 和 MyBatis。 1. **Spring Boot**...

    Spring MVC / Spring Boot中使用Thymeleaf模板引擎

    在Java Web开发中,Spring MVC和Spring Boot框架是广泛使用的工具,它们提供了高效且灵活的构建Web应用的方式。Thymeleaf则是一个流行的服务器端模板引擎,它允许开发者使用HTML来编写视图,并在服务器端解析这些...

    Spring Boot学习 Spring Boot Spring MVC MyBatis MySQL Spring .zip

    Spring还包含了数据访问/集成、Web应用框架、声明式事务管理、单元测试和模拟对象等模块。 在Spring Boot项目中,我们通常会结合Spring MVC和MyBatis来构建后端服务。首先,通过Spring Initializr或者手动创建项目...

    个人学校项目(Java Spring Boot MVC)-家庭预算跟踪器.zip

    【标题】中的“个人学校项目(Java Spring Boot MVC)-家庭预算跟踪器”表明这是一个使用Java编程语言,基于Spring Boot框架,并且应用了MVC设计模式的个人学习项目。这个项目的目标是创建一个家庭预算跟踪器,帮助...

    最全最经典spring-mvc教程

    Spring MVC提供了MockMVC,可以在不依赖服务器的情况下进行单元测试和集成测试。 这个"最全最经典spring-mvc教程"应该会详细讲解上述所有概念,并可能通过实例演示如何配置、创建和调试Spring MVC项目。对于想要...

    LEARNING SPRING BOOT 3.0 - THIRD EDITION

    《Learning Spring Boot 3.0 - 第三版》是...书中还会深入讨论Spring Boot的核心特性,比如自动配置、健康检查、内嵌的Tomcat或Jetty服务器、Spring MVC用于构建RESTful API,以及数据访问层的集成,包括JPA和Hibernat

    Spring Boot 2.X 实战教程.pdf

    本课程内容包括Spring简介、Spring Boot简介、安装JDK、安装Maven、第一...MVC框架(安装Postman、自定义欢迎页面、Icon、错误页面)、安装MySQL数据库和客户端、配置数据源、Spring Data JPA代码、Spring Data JPA增...

    Spring Boot 2.5.0简单学习pdf资料

    在 Spring Boot 2.5.0 中,项目开发流程通常包括需求分析、概要设计、详细设计、编码、测试和部署等几个阶段。在每个阶段都需要遵守一定的流程和规范,以确保项目的质量和可维护性。 环境搭建 在 Spring Boot ...

    Learning Spring Boot 2.0 Second Edition

    测试是保证软件质量的重要环节,书里会涵盖Spring Boot的单元测试和集成测试,使用Mockito和WireMock进行模拟测试,以及如何进行性能和压力测试。 最后,本书还会讲解Spring Boot的应用部署,包括本地开发环境的...

    Spring Boot 2 Recipes

    访问Spring MVC和新的Spring Web Sockets,以实现更简单的Web开发 使用微服务进行Web服务开发并与Spring Boot应用程序集成 无缝添加持久性和数据层,使您的Spring Boot Web应用程序做得更多 使用Spring Boot集成企业...

    spring boot+spring mvc+spring整合开发音乐小程序(含简单服务端)

    spring boot+spring mvc+spring整合开发**音乐**小程序(含简单服务端) 项目描述 spring boot+spring mvc+spring代理请求**音乐接口获取数据,然后提供给**小程序做显示 运行环境 jdk8+IntelliJ IDEA+maven ...

    Spring、Spring Boot和TestNG测试指南1

    Spring框架提供了全面的测试支持,包括单元测试和集成测试。Spring Testing模块包含了一系列的API和注解,如`@RunWith(SpringRunner.class)`,`@SpringBootTest`,`@WebMvcTest`等,用于简化Spring应用的测试。这些...

    Spring-Boot-Reference-Guide, Spring Boot Reference Guide中文翻译 -《Spring Boot参考指南》.zip

    2. @WebMvcTest:针对Web层进行单元测试,只加载Web相关组件。 3. TestRestTemplate:用于HTTP客户端模拟,测试RESTful服务。 综上,《Spring Boot参考指南》覆盖了Spring Boot的各个方面,无论是初学者还是经验...

Global site tag (gtag.js) - Google Analytics