首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

《Spring实战》读书笔记-第5章 构建Spring Web应用程序

在本章中,我们将会介绍Spring MVC Web框架,并使用Spring MVC注解来构建处理各种Web请求、参数表单输入控制器。...从Spring 3.2开始,我们可以按照控制器方式来测试Spring MVC中控制器了,就是使用mock Spring MVC测试。...通过路径参数接受输入 假设我们应用程序需要根据给定ID来展现某一个Spittle记录。其中一种方法就是编写处理器方法,通过使用@RequestParam注解,让它接受ID作为查询参数。...尽管本章中很多内容都是关于控制器请求处理,但是渲染响应同样也是很重要。我们通过使用JSP方式,简单了解了如何为控制器编写视图。...但是就Spring MVC视图来说,它并不限于本章所看到简单JSP。 在接下来第6章中,我们将会更深入地学习Spring视图,包括如何在JSP中使用Spring标签库。

1.4K30

SpringMvc 之MockMvc帮我们解决了什么问题

MockMvc实现了对Http请求模拟,能够直接使用网络形式,转换到Controller调用,这样可以使得测试速度快, 不依赖网络环境, 而且提供了一整套验证框架工具,这样可以使得请求验证统一而且方便...使用 MockMvc 测试介于单元测试集成测试之间。...Home ()方法返回具有单个属性视图,message ()方法返回纯文本消息。在我们测试中,我们测试这两种方法。 index.html <!...在spring开发中,可以使用Spring自带MockMvc这个类进行Mock测试。...是用来构造MockMvc构造器,其主要有两个实现: StandaloneMockMvcBuilderDefaultMockMvcBuilder 分别对应两种测试方式,即独立安装集成Web环境测试

1.2K20
您找到你想要的搜索结果了吗?
是的
没有找到

一分钟上手SpringBootTest,单元测试如此简单

本文主要讲述如何在SpringBoot框架上进行单元测试。也就是使用SpringBootTest进行单元测试。...@RunWith 注解是Junit4提供注解,将SpringJunit链接了起来。...MockMvc 实现了对Http请求模拟,能够直接使用网络形式,转换到Controller调用,这样可以使得测试速度快,不依赖网络环境,而且提供了一套验证工具,这样可以使得请求验证统一而且很方便...andExpect 方法是添加执行完成后断言,添加ResultMatcher验证规则,验证控制器执行完成后结果是否正确,此处是验证状态是否是200 andDo 方法是添加一个结果处理器,比如在此处是...,首先介绍了如何引入依赖,接着介绍了编写一个测试基类,并且对其中涉及各个注解做了一个详细说明。

1.8K40

SpringBoot基础之MockMvc单元测试

在编程过程中,通常通过模拟一些输入数据,来验证程序是否达到预期结果。 为什么使用Mock对象 使用模拟对象,可以模拟复杂、真实对象行为。如果在单元测试中无法使用真实对象,可采用模拟对象进行替代。...,在测试之前可能需要初始化); 真实对象是用户界面,或包括用户界面在内; 真实对象使用了回调机制; 真实对象可能还不存在; 真实对象可能包含不能用作测试(而不是为实际工作)信息方法。...使用Mockito一般分三个步骤:1、模拟测试类所需外部依赖;2、执行测试代码;3、判断执行结果是否达到预期; MockMvc MockMvc是由spring-test包提供,实现了对Http请求模拟...主要有两个实现:StandaloneMockMvcBuilderDefaultMockMvcBuilder,分别对应两种测试方式,即独立安装集成Web环境测试(并不会集成真正web环境,而是通过相应...一些常用测试 1.测试普通控制器 mockMvc.perform(get("/user/{id}", 1)) //执行请求 .andExpect(model().attributeExists

11.4K21

Spring Boot单元测试(概念)

JsonPath:提供类似于Xpath(一门在XML文档中查找信息语言)那样符号来获取JSOn数据片段。...二、Spring Boot单元测试程序模板 @RunWith注解是JUnit标准一个注解,目的是告诉JUnit框架不要使用内置方法进行单元测试,而应使用@RunWith指明类来进行单元测试,...三、测试Service    单元测试Service代码与通过Controller调用Service代码相比,需要特别考虑该Service是否依赖其他还未开发完毕Service(第三方接口)。...{ //MockMvc是Spring提供专用于测试Controller类 @Autowired private MockMvc mvc; //用@MockBean模拟实现UserService,这是因为在测试...,Controller测试是一张模拟测试,实际上并未发起一次真正HTTP请求;get方法模拟了一次Get请求,请求地址为/getCredit/{id},这里{id}被其后参数uid代替,因此请求路径是

1.6K30

Selenium面试题

16、断言和验证命令区别是什么? 17、XPath是什么? 18、XPath AbsoluteXPath属性是什么? 19、XPath中“/”“//”有什么区别?...41、如何使用Selenium在文本框中输入文本? 42、怎么知道一个元素是否显示在屏幕上? 43、如何使用linkText点击超链接? 1、什么是测试自动化或自动化测试?...关于 XPath 其他一些要点如下: XPath 是一种用于在 XML 文档中定位节点语言。 当没有适合要定位元素 id 或 name 属性时,可以使用 XPath 作为替代。...XPath 提供定位策略,例如: XPath 绝对 XPath 属性 18、XPath AbsoluteXPath属性是什么?.../form/div[1]/input[1] XPath 属性: 当没有适合要定位元素 id 或 name 属性时,始终建议使用 XPath 属性

8.4K11

Spring实战5-基于Spring构建Web应用主要内容

这一章将涉及Spring MVC框架主要知识,由于基于注解开发是目前Spring社区潮流,因此我们将侧重介绍如何使用注解创建控制器,进而处理各类web请求和表单提交。...在很多情况下并没有这个必要,但是对于SpittleController控制器来说,视图名称路径名称相同,如果使用默认视图解析器,则MockMvc会混淆这两者而失败,报出如下图所示错误: ?...通过get方法构造GET请求,访问"/spittles",并确保返回视图名称是"spittles",返回model数据中包含spittleList属性,且对应值为我们之前创建测试数据。....andExpect(model().attribute("spittle", expectedSpittle)); } 该测试用例首先模拟一个repository、控制器MockMvc对象,跟之前几个测试用例相同...涵盖了Spring MVC处理web请求处理过程、如何写简单控制器控制器方法来处理Http请求、如何使用mockito框架测试控制器方法。

2.5K20

《Spring实战》摘录 - 11

101 问题: #5.2.3-1 | 测试SpittleController处理针对“/spittles”GET请求 回答: @Test public void shouldShowRecentSpittles....andExpect(view().name(“spittles”)) .andExpect(model().attributeExists(“spittleList”))...- 所注解元素必须是数字,并且它值要小于或等于给定值 @Min - 所注解元素必须是数字,并且它值要大于或等于给定值 @NotNull - 所注解元素值必须不能为null @Null -...Spring应用上下文中bean,其中beanID与视图名字相同 ContentNegotiatingViewResolver - 通过考虑客户端需要内容类型来解析视图,委托给另外一个能够产生对应内容类型视图解析器...JstlView形式JSP文件,从而将JSTL本地化资源bundle变量暴露给JSTL格式化(formatting)信息(message)标签。

67220

单元测试不止Junit,会MockMvc才是高手!

这里仅仅做一个入门,对返回视图返回 Json 数据方法进行测试演示,不会把所有的方法都介绍到,具体文档详见链接:Mock Test,本章节主要讲解以下两部分内容: 1、Mock 测试简介 2、测试用例演示...2、为什么使用 mock 测试 避免开发模块之间耦合 轻量、简单、灵活 3、MockMVC 介绍 基于 RESTful 风格 SpringMVC 测试,我们可以测试完整 Spring MVC 流程...1)MockMvcBuilder MockMvcBuilder 是用来构造 MockMvc 构造器,其主要有两个实现:StandaloneMockMvcBuilder DefaultMockMvcBuilder...4)ResultActions (1)andExpect:添加 ResultMatcher 验证规则,验证控制器执行完成后结果是否正确; (2)andDo:添加 ResultHandler 结果处理器,...在这个方法中比较特殊就是设置 MediaType 类型,因为都是使用 Json 格式,所以设置了 MediaType.APPLICATION_JSON,jsonPath 用于比对期望数据是否与返回结果一致

1.9K30

实战:Spring Boot 程序如何做好 Web 层测试

引言 本文将讨论如何针对 Spring Boot 程序 Web 层进行测试,借助 MockMvc API 以及常见测试库实现 Web 层方法测试覆盖,以及如何定制 MockMvc。...接着使用 @AutoConfigureMockMvc 注解自动装配在 Web 层测试发挥关键作用 MockMvc 对象,我们编写控制器方法就是通过 MockMvc 实现测试调用。...上述代码就完成了对一个 GET 请求测试访问断言,那问题又来了,如果是请求路径上没有带参数又该如何测试呢?...id=1 对于这种请求编写测试方法如下,使用 MockHttpServletRequestBuilder.queryParam 补充具体请求参数键值对,如果存在多个请求参数,还可通过链式调用方式追加...MockMvc 进阶 前面我们使用 MockMvc 是由 Spring 帮我们注入,如果我们想要自定义 MockMvc,又该如何做呢?

93420

重学SpringBoot系列之Mockito测试

---- Mockito测试框架 Mockito是GitHub上使用最广泛Mock框架,并与JUnit结合使用.Mockito框架可以创建和配置mock对象.使用Mockito简化了具有外部依赖测试开发...contentType:发送请求内容序列化格式,"application/json"表示JSON数据格式 andExpect:添加RequsetMatcher验证规则,验证控制器执行完成后结果是否正确...实现效果使用MockMvcBuilders构建MockMVC对象效果是一样,但是有一个非常明显缺点:每次做一个接口测试,都会真实启动一次servlet容器,Spring上下文加载项目里面定义所有的...注解属性赋值逻辑准确性 测试数据不是真实场景存在问题 测试中,单个事务中准备数据,无法在多线程中共享。...---- MockMvc更多用法总结 //模拟GET请求: mockMvc.perform(MockMvcRequestBuilders.get("/user/{id}", userId)); //

2.4K20

这可能是解决你Spring MVC接口漏洞百出关键

也有的使用 Postman 等工具进行测试,虽然在使用上没有什么问题,如果接口增加了权限测试起来就比较恶心了。所以建议在单元测试测试接口,保证在交付前先自测接口健壮性。...今天就来分享一下胖哥在开发中是如何对 Spring MVC 接口进行测试。...对结果进行预期期望 ResultActions#andExpect(ResultMatcher matcher)方法负责对响应结果进行预期期望,看看是否符合测试期望值。...完整测试过程 通常andExpect是我们必然会选择,而andDoandReturn在某些场景下会有用,它们两个是可选。我们把上面的连在一起。...总结 一旦你熟练了这种方式,你编写接口将更加具有权威性而不会再漏洞百出,甚至有时候你也可以使用 Mock 来设计接口,使之更加贴合业务。

99021

如何对Spring MVC中Controller进行单元测试

如下将详细阐述如何使用MockMvc测试框架实现对“Spring Controller”进行单元测试,基于Spring Boot开发框架进行验证。 添加测试框架依赖: <!...初始化MockMvc有2种方式: 方式1:明确指定需要测试“Controller”类进行配置 方式2:基于Spring容器进行配置,包含了Spring MVC环境所有“Controller”类...,有2种方式: 1.使用JUnit提供Assert断言工具判断返回结果,这是一种非常普遍常见方式 2.在MockMvc框架中可以通过andExpect()方法定义一个或多个预期结果,当其中一个期望结果断言失败时...,就不会断言其他期望值了 // 使用Junit断言工具判断返回结果是否符合预期 @Test public void testAssertResult() throws Exception { MvcResult...写在最后 使用Spring提供测试框架MockMvc可以非常方便地实现对HTTP服务接口进行单元测试,不要把基础功能验证工作都交给测试童鞋,应该通过单元测试来保证代码迭代稳定性。

2.1K30

使用Selenium WebDriver,PythonChrome编写您第一个Web测试

每次运行此测试时,pytest都会自动调用固定装置并注入WebDriver参考。然后,测试函数使用该browser变量进行多个WebDriver调用。让我们看看这些调用是如何工作。...再次,测试将其声明在测试功能顶部,以提高可读性可维护性。 browser.get(URL) 测试起点是DuckDuckGo主页。此调用将浏览器导航到给定URL。...上面的CSS选择器可以找到所有这样结果链接div。请注意,“元素”是复数–此调用将返回一个列表。 assert len(link_divs) > 0 测试必须验证搜索词是否确实出现了结果。...断言(2) xpath = f"//div[@id='links']//*[contains(text(), '{PHRASE}')]" 验证是否出现了一些结果很好,但是我们还应该验证结果是否与我们搜索词匹配...我们可以使用XPath来精确定位包含文本中搜索短语结果链接XPath比名称CSS选择器复杂,但它们也更强大。

2.3K10
领券