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中,单元测试是确保代码质量和可维护性的重要组成部分。通过单元测试,开发者能够独立验证代码的各个部分,确保它们按照预期工作,并在修改代码后快速发现潜在问题。Spring Boot为此提供了一系列便利...
在Spring Boot框架中,单元测试是一项至关重要的任务,它能够帮助开发者确保代码的正确性和可靠性。Spring Boot提供了方便的工具和库,使得编写和执行单元测试变得简单高效。本章节我们将深入探讨Spring Boot中的...
Spring MVC 是一个强大的Java web开发框架,用于构建可维护、可扩展的...总之,通过正确使用JUnit、Mockito、Spring Test以及MockMVC,我们可以编写出全面、有效的Spring MVC单元测试,确保代码质量并降低潜在的bug。
1. **Spring Boot MVC**:Spring Boot 提供了对 Spring MVC 的集成,使得构建 Web 应用变得简单。MVC(Model-View-Controller)设计模式是 Web 开发中常用的一种架构模式,用于分离业务逻辑、数据模型和用户界面。在...
Spring Boot MVC 是一个基于Spring框架的高度简化开发的工具,它整合了Spring MVC和Spring的核心特性,使得构建Web应用变得更加便捷。在"spring boot 携带token登录,token拦截器,增删改查功能"这个描述中,我们...
Spring Boot MVC + Maven + MyBatis 是一个常见的Java Web开发技术栈,用于构建高效、简洁且可独立运行的微服务应用。在这个项目中,我们主要关注三个核心组件:Spring Boot、MVC 和 MyBatis。 1. **Spring Boot**...
在Java Web开发中,Spring MVC和Spring Boot框架是广泛使用的工具,它们提供了高效且灵活的构建Web应用的方式。Thymeleaf则是一个流行的服务器端模板引擎,它允许开发者使用HTML来编写视图,并在服务器端解析这些...
Spring还包含了数据访问/集成、Web应用框架、声明式事务管理、单元测试和模拟对象等模块。 在Spring Boot项目中,我们通常会结合Spring MVC和MyBatis来构建后端服务。首先,通过Spring Initializr或者手动创建项目...
【标题】中的“个人学校项目(Java Spring Boot MVC)-家庭预算跟踪器”表明这是一个使用Java编程语言,基于Spring Boot框架,并且应用了MVC设计模式的个人学习项目。这个项目的目标是创建一个家庭预算跟踪器,帮助...
Spring MVC提供了MockMVC,可以在不依赖服务器的情况下进行单元测试和集成测试。 这个"最全最经典spring-mvc教程"应该会详细讲解上述所有概念,并可能通过实例演示如何配置、创建和调试Spring MVC项目。对于想要...
《Learning Spring Boot 3.0 - 第三版》是...书中还会深入讨论Spring Boot的核心特性,比如自动配置、健康检查、内嵌的Tomcat或Jetty服务器、Spring MVC用于构建RESTful API,以及数据访问层的集成,包括JPA和Hibernat
本课程内容包括Spring简介、Spring Boot简介、安装JDK、安装Maven、第一...MVC框架(安装Postman、自定义欢迎页面、Icon、错误页面)、安装MySQL数据库和客户端、配置数据源、Spring Data JPA代码、Spring Data JPA增...
在 Spring Boot 2.5.0 中,项目开发流程通常包括需求分析、概要设计、详细设计、编码、测试和部署等几个阶段。在每个阶段都需要遵守一定的流程和规范,以确保项目的质量和可维护性。 环境搭建 在 Spring Boot ...
测试是保证软件质量的重要环节,书里会涵盖Spring Boot的单元测试和集成测试,使用Mockito和WireMock进行模拟测试,以及如何进行性能和压力测试。 最后,本书还会讲解Spring Boot的应用部署,包括本地开发环境的...
访问Spring MVC和新的Spring Web Sockets,以实现更简单的Web开发 使用微服务进行Web服务开发并与Spring Boot应用程序集成 无缝添加持久性和数据层,使您的Spring Boot Web应用程序做得更多 使用Spring Boot集成企业...
spring boot+spring mvc+spring整合开发**音乐**小程序(含简单服务端) 项目描述 spring boot+spring mvc+spring代理请求**音乐接口获取数据,然后提供给**小程序做显示 运行环境 jdk8+IntelliJ IDEA+maven ...
Spring框架提供了全面的测试支持,包括单元测试和集成测试。Spring Testing模块包含了一系列的API和注解,如`@RunWith(SpringRunner.class)`,`@SpringBootTest`,`@WebMvcTest`等,用于简化Spring应用的测试。这些...
2. @WebMvcTest:针对Web层进行单元测试,只加载Web相关组件。 3. TestRestTemplate:用于HTTP客户端模拟,测试RESTful服务。 综上,《Spring Boot参考指南》覆盖了Spring Boot的各个方面,无论是初学者还是经验...