当前位置: 首页 > news >正文

7、单元测试--测试RestFul 接口

单元测试–测试RestFul 接口

– 测试用例类使用@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT)修饰。
– 测试用例类会接收容器依赖注入TestRestTemplate这个实例变量。
– 测试方法可通过TestRestTemplate来调用RESTful接口的方法。

测试用例应该定义在和被测试类位于同一个包位置。


// 测试用例的位置要和被测试的位于同一个包路径位置。
//参数webEnvironment web环境,RANDOM_PORT表示随机端口
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class BookControllerTest {//测试用例类会接收容器依赖注入TestRestTemplate这个实例变量@Autowiredprivate TestRestTemplate testRestTemplate;//注意点:测试的时候,对应的方法的参数列表要加上注解@RequestBody,不然这个book实体传到方法那边,方法无法接收,会变成null。//单次测试@Testpublic void testAddBookRestful(){//生成测试数据Book book = new Book("mysql", new BigDecimal(100), "ljh");//参数1:访问的路径,参数2:测试的数据,参数3:获取服务器响应的数据类型,就是方法的返回值类型Book b = testRestTemplate.postForObject("/books", book, Book.class);//断言 参数1:期望值 , 参数2:实际值Assertions.assertEquals("mysql",b.getName());Assertions.assertEquals(BigDecimal.valueOf(100),b.getPrice());Assertions.assertEquals("ljh",b.getAuthor());}//参数化测试,可以让方法进行多次测试@ParameterizedTest //允许测试方法接收参数进行测试,和注解 @CsvSource 一起使用,@CsvSource注解用来写参数数据//参数是一个数组,数组里面的每一个元素就是方法的参数@CsvSource({"书籍A,100,ljh","书籍B,110,ljh","书籍C,120,ljh"})public void testAddBookRestful02(String name,BigDecimal price,String author){//生成测试数据Book book = new Book(name, price, author);//测试Book b = testRestTemplate.postForObject("/books", book, Book.class);//断言Assertions.assertEquals(name,b.getName());Assertions.assertEquals(price,b.getPrice());Assertions.assertEquals(author,b.getAuthor());}
}

解释:
注意点1:
涉及注解:@RequestBody
测试的时候,被测试的方法的参数列表要加上注解@RequestBody,不然这个book实体传到被测试方法那边,方法的参数无法接收,会变成null。
在这里插入图片描述

单次测试添加图书:

在这里插入图片描述

多次测试添加图书:

涉及到注解:
1、@ParameterizedTest 表示这个测试是参数化测试,junit5 才有的注解
//允许测试方法使用参数进行测试,
和注解 @CsvSource 一起使用,@CsvSource注解用来写参数数据

2、@CsvSource({“书籍A,100,ljh”,“书籍B,110,ljh”,“书籍C,120,ljh”})
//参数是一个数组,数组里面的每一个元素就是方法的参数,每个元素里面的多个参数用逗号隔开
在这里插入图片描述

测试查询方法

在这里插入图片描述

测试删除

涉及的注解:
@ParameterizedTest //表明这个测试方法属于参数测试
@ValueSource(ints = {76, 77, 78}) //具体参数
在这里插入图片描述

相关文章:

7、单元测试--测试RestFul 接口

单元测试–测试RestFul 接口 – 测试用例类使用SpringBootTest(webEnvironment WebEnvironment.RANDOM_PORT)修饰。 – 测试用例类会接收容器依赖注入TestRestTemplate这个实例变量。 – 测试方法可通过TestRestTemplate来调用RESTful接口的方法。 测试用例应该定义在和被测…...

国家留学基金委(CSC)|发布2024年创新型人才国际合作培养项目实施办法

2023年7月28日,国家留学基金委(CSC)发布了《2024年创新型人才国际合作培养项目实施办法》,在此知识人网小编做全文转载。详细信息请参见https://www.csc.edu.cn/chuguo/s/2648。 2024年创新型人才国际合作培养项目实施办法 第一章…...

找好听的配乐、BGM就上这6个网站,免费商用。

推荐几个音乐素材网站给你,各种类似、风格的都有,而且免费下载,还可以商用,建议收藏起来~ 菜鸟图库 https://www.sucai999.com/audio.html?vNTYxMjky 站内有上千首音效素材,网络流行的音效素材这里都能找到&#xf…...

【前端知识】React 基础巩固(三十五)——ReduxToolKit (RTK)

React 基础巩固(三十五)——ReduxToolKit (RTK) 一、RTK介绍 Redux Tool Kit (RTK)是官方推荐的编写Redux逻辑的方法,旨在成为编写Redux逻辑的标准方式,从而解决上面提到的问题。 RTK的核心API主要有如下几个: confi…...

android Android Studio Giraffe | 2022.3.1 版本Lombok不兼容 解决方案

android Android Studio Giraffe | 2022.3.1 版本Lombok不兼容 解决方案 1.查看当前的android studio 版本 Android Studio Giraffe | 2022.3.1 Build #AI-223.8836.35.2231.10406996, built on June 29, 2023 2.打开 idea 官网下载页面 idea下载历史版本 找到对应的版本编号…...

前端框架学习-基础前后端分离

前端知识栈 前端三要素:HTML、CSS、JS HTML 是前端的一个结构层,HTML相当于一个房子的框架,可类比于毛坯房只有一个结构。CSS 是前端的一个样式层,有了CSS的装饰,相当于房子有了装修。JS 是前端的一个行为层&#xff…...

数据中心电子电气设备常见的五种地线种类和做法

数据中心机房计算机系统的集成化程度很高,其正常工作对环境的要求很严格。接地,是指电力系统和电气装置的中性点、电气设备的外露导电部分和装置外导电部分经由导体与大地相连。其作用主要是防止人身遭受电击、设备和线路遭受损坏、预防火灾和防止雷击、…...

重学C++系列之STL库

一、什么是STL库 STL是“Standard Template Library”的缩写,中文翻译为“标准模板库”。CSTL是一套功能强大的C模板类,提供了通用的模板类和函数,这些模板类和函数可以实现多种流行和常用的算法和数据结构,如字符串操作、链表、队…...

JAVA SE -- 第十四天

(全部来自“韩顺平教育”) 泛型 一、泛型 1、基本介绍 ①泛型又称参数类型,是Jdk5.0出现的新特性,解决数据类型的安全性问题 ②在类声明或实例化时只要指定好需要的具体的类型即可 ③Java泛型可以保证如果程序在编译时没有发…...

微信小程序监测版本更新

在index.js里面 不放到app.js里面是因为有登录页面,在登录页面显示更新不太友好 onShow() {const updateManager wx.getUpdateManager()// 请求完新版本信息的回调updateManager.onCheckForUpdate(res > {if (res.hasUpdate) {// 新版本下载成功updateManage…...

《Java面向对象程序设计》学习笔记——第 2 章 基本数据类型、数组和枚举类型

专栏:《Java面向对象程序设计》学习笔记...

TDesign中后台管理系统-访问后端服务

目录 1 修改后端服务地址2 解决跨域问题3 动态获取菜单4 测试后端接口5 前后端联调总结 目前我们已经搭建了TDesign的前端和express的后端,目前是两个独立的应用。通常我们需要把前后端集成在一起,TDesign已经配置了相关的信息,只需要修改后端…...

【机器学习】Gradient Descent for Logistic Regression

Gradient Descent for Logistic Regression 1. 数据集(多变量)2. 逻辑梯度下降3. 梯度下降的实现及代码描述3.1 计算梯度3.2 梯度下降 4. 数据集(单变量)附录 导入所需的库 import copy, math import numpy as np %matplotlib wi…...

ElasticSearch基础篇-Java API操作

ElasticSearch基础-Java API操作 演示代码 创建连接 POM依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:sch…...

解决uniapp的tabBar使用iconfont图标显示方块

今天要写个uniapp的移动端项目&#xff0c;底部tabBar需要添加图标&#xff0c;以往都是以图片的形式引入&#xff0c;但是考虑到不同甲方的主题色也不会相同&#xff0c;使用图片的话&#xff0c;后期变换主题色并不友好&#xff0c;所以和UI商量之后&#xff0c;决定使用icon…...

UE4/5C++多线程插件制作(0.简介)

目录 插件介绍 插件效果 插件使用 English 插件介绍 该插件制作&#xff0c;将从零开始&#xff0c;由一个空白插件一点点的制作&#xff0c;从写一个效果到封装&#xff0c;层层封装插件&#xff0c;简单粗暴的对插件进行了制作&#xff1a; 插件效果 更多的是在cpp中去…...

ChatFile实现相关流程

文本上传构建向量库后台库的内容 调用上传文件接口先上传文件 存在疑问:暂时是把文件保存在tmp文件夹,定时清理,是否使用云存储 根据不同的文件类型选取不同的文件加载器加载文件内容 switch (file.mimetype) {case application/pdf:loader new PDFLoader(file.path)breakc…...

15 文本编辑器vim

15.1 建立文件命令 如果file.txt就是修改这个文件&#xff0c;如果不存在就是新建一个文件。 vim file.txt 使用vim建完文件后&#xff0c;会自动进入文件中。 15.2 切换模式 底部要是显示插入&#xff0c;是编辑模式&#xff1b; 按esc&#xff0c;底部要是空白的&#xff0…...

如何运行疑难解答程序来查找和修复Windows 10中的常见问题

如果Windows 10中出现问题&#xff0c;运行疑难解答可能会有所帮助。疑难解答人员可以为你找到并解决许多常见问题。 一、在控制面板中运行疑难解答 1、打开控制面板&#xff08;图标视图&#xff09;&#xff0c;然后单击“疑难解答”图标。 2、单击“疑难解答”中左上角的…...

程序员成长之路心得篇——高效编码诀窍

随着AIGC的飞速发展&#xff0c;程序员越来越能够感受到外界和自己的压力。如何能够在AI蓬勃发展的时代不至于落后&#xff0c;不至于被替代&#xff1f;项目的开发效率起了至关重要的作用。 首先提出几个问题&#xff1a; 如何实现高效编程?高效编程的核心在于哪里&#xff…...

基于CircuitPython与蓝牙BLE的交互式电子糖果心制作指南

1. 项目概述&#xff1a;一个可交互的蓝牙电子糖果心 情人节期间&#xff0c;那些印着“BE MINE”、“HUG ME”等短句的糖果心&#xff08;Conversation Hearts&#xff09;总是能传递简单而直接的情感。你有没有想过&#xff0c;如果能亲手制作一个可以随时改变文字和颜色的电…...

告别枯燥表格!用Power BI的矩形树图,5分钟搞定你的销售利润可视化分析

商业数据可视化实战&#xff1a;用Power BI矩形树图5分钟呈现销售利润洞察 在每周的销售复盘会议上&#xff0c;你是否经常面对这样的困境&#xff1a;手头有一份密密麻麻的Excel表格&#xff0c;包含了各省市、各产品的销售利润数据&#xff0c;却难以快速向团队传达关键业务洞…...

fastmod vs codemod:为什么你应该选择这个更快的代码替换工具

fastmod vs codemod&#xff1a;为什么你应该选择这个更快的代码替换工具 【免费下载链接】fastmod A fast partial replacement for the codemod tool. Assists with large-scale codebase refactors via regex-based find and replace with human oversight and occasional i…...

Zeek日志AI分析平台:从网络监控到智能威胁检测的架构与实践

1. 项目概述&#xff1a;从开源网络监控到智能分析的进化如果你在网络安全、运维或者数据分析领域摸爬滚打过几年&#xff0c;大概率听说过 Zeek&#xff08;以前叫 Bro&#xff09;。它不是一个简单的入侵检测系统&#xff0c;而是一个功能强大的网络分析框架&#xff0c;能够…...

《魔兽世界》怀旧服:纳克萨玛斯教官拉苏维奥斯战术详解与实战心得

1. 教官拉苏维奥斯战斗机制解析 教官拉苏维奥斯作为纳克萨玛斯军事区的守门BOSS&#xff0c;其战斗核心在于学员控制循环与仇恨管理的双重考验。这个BOSS战最特别的地方在于&#xff0c;你需要同时应对教官本体的高伤害和四名学员的协同作战。很多团队第一次开荒时容易忽略学员…...

从压测到瓶颈定位:一次完整的性能分析思路

很多人刚接触压测时&#xff0c;会产生一种错觉&#xff1a;“压测不就是看 QPS 吗&#xff1f;”但压测的本质&#xff0c;从来不是“跑数字”&#xff0c;而是&#xff1a;找到系统的性能极限&#xff0c;以及限制系统性能的真正瓶颈。 本文会围绕下面几个核心问题&#xff0…...

Axure RP中文界面汉化终极指南:3分钟免费切换,让原型设计更高效

Axure RP中文界面汉化终极指南&#xff1a;3分钟免费切换&#xff0c;让原型设计更高效 【免费下载链接】axure-cn Chinese language file for Axure RP. Axure RP 简体中文语言包。支持 Axure 11、10、9。不定期更新。 项目地址: https://gitcode.com/gh_mirrors/ax/axure-c…...

紧急通知:v8.1即将关闭旧版审美缓存——72小时内必须完成的3步风格校准清单

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;v8.1旧版审美缓存关停的技术动因与全局影响 核心架构演进压力 V8.1 引擎中长期运行的“审美缓存”&#xff08;Aesthetic Cache&#xff09;模块&#xff0c;本质上是一套基于 DOM 树节点样式偏好建模…...

当AI的键值记忆遇上大脑:原来我们和AI共享同一套记忆逻辑

导语在日常经验中&#xff0c;我们常把“遗忘”理解为信息的流失&#xff1a;时间久了&#xff0c;记忆就会慢慢消失&#xff1b;学习新知识&#xff0c;也可能覆盖旧内容。然而&#xff0c;从短视频推荐到大语言模型&#xff0c;再到人类被线索唤醒的记忆体验&#xff0c;这些…...

初创团队如何借助 Taotoken 的 Token Plan 有效控制大模型使用成本

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 初创团队如何借助 Taotoken 的 Token Plan 有效控制大模型使用成本 对于初创团队和独立开发者而言&#xff0c;在项目早期验证想法…...