SpringBoot + Junit5 + MockMvc 写单元测试
1.1 junit5 版本5.6.0 pom文件如下:
<properties>
<junit.jupiter.version>5.6.0</junit.jupiter.version>
</properties> <dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
<version>${junit.jupiter.version}</version>
<scope>test</scope>
</dependency> <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</exclusion>
</exclusions>
</dependency>
1.2 test 测试类里面 首先先构建mockMvc的环境
@SpringBootTest
@ExtendWith(SpringExtension.class) //导入Spring测试框架
@DisplayName("人员ctr测试")
public class PersonControllerTest { @Autowired
private PersonController personController ; private MockMvc mockMvc; @BeforeEach
public void setUp() {
MockitoAnnotations.initMocks(this);//这句话执行以后,service自动注入到controller中。
// (1)构建mvc环境
mockMvc = MockMvcBuilders.standaloneSetup((personController)).build();
}
}
1.3 开始编写测试方法
1.2.1 Junit5最大的变化就是可以传参 ,简单介绍一下用法
@ValueSource(strings = {"111","222"}) //多个参数执行多次(即id为111执行一次后还会执行id为222) ,参数为字符串类型 public void test(String id){}
@MethodSource("getPerson") //参数为方法,方法里面你可以写你想要的数据格式 ,比如getPerson返回的JSONObject格式 public void test(JSONObject jsonobject){}
@ParameterizedTest //需要传参数时需要使用, 跟上面的注解是配套用的
1.2.2 MockMvc的使用:模拟对象去调用,真正实现单元测试
1. mockMvc.perform(MockMvcRequestBuilders.get("/v1/user/get_info") //请求构建mvc环境时的controller层里面的地址 , 可以get、post、put请求
2. .contentType(MediaType.APPLICATION_FORM_URLENCODED) //设置内容格式 ,当为post请求时要使用 .accept()设置接收格式,和内容的格式一样
3. post传参使用 .content(JSONObject.toJSONString(personIds))//设置内容
@Test
@DisplayName("根据id_获取人员信息")
@Order(1) //顺序
// @MethodSource("getPerson") //参数为方法
@ValueSource(strings = {"111","222"}) //多个参数执行多次
@ParameterizedTest //需要传参数时使用
public void getPersonById(String id) throws Exception { MockHttpServletResponse response = mockMvc.perform(MockMvcRequestBuilders.get("/v1/person/get_info")
.contentType(MediaType.APPLICATION_FORM_URLENCODED) //设置内容格式
.param("personid",id)//设置内容
)
.andDo(MockMvcResultHandlers.print())//返回打印结果
.andExpect(MockMvcResultMatchers.status().isOk())
.andReturn().getResponse();
response.setCharacterEncoding("UTF-8"); //解决中文乱码问题 Result<PersonDTO> result = JSONObject.parseObject(response.getContentAsString(), Result.class);//反序列化成对象
Assertions.assertTrue(result.getDataStore() != null); //断言结果校验
}
1.4 测试成功
SpringBoot + Junit5 + MockMvc 写单元测试的更多相关文章
- 【快学springboot】在springboot中写单元测试[Happyjava]
前言 很多公司都有写单元测试的硬性要求,在提交代码的时候,如果单测通不过或者说单元测试各种覆盖率不达标,会被拒绝合并代码.写单元测试,也是保证代码质量的一种方式. junit单元测试 相信绝大多数的J ...
- 【快学springboot】在springboot中写单元测试
前言 很多公司都有写单元测试的硬性要求,在提交代码的时候,如果单测通不过或者说单元测试各种覆盖率不达标,会被拒绝合并代码.写单元测试,也是保证代码质量的一种方式. junit单元测试 相信绝大多数的J ...
- java~springboot~h2数据库在单元测试中的使用
单元测试有几点要说的 事实上springboot框架是一个tdd框架,你在进行建立项目时它会同时建立一个单元测试项目,而我们的代码用例可以在这个项目里完成,对于单元测试大叔有以下几点需要说明一下: 单 ...
- IDEA中SpringBoot项目快速创建单元测试
如何在IDEA中对于SpringBoot项目快速创建单元测试 创建测试用例 右键需要进行测试的方法,选择GO TO然后选择Test 点击Create New Test 勾选需要创建单元测试的方法 然后 ...
- SpringBoot学习笔记:单元测试
SpringBoot学习笔记:单元测试 单元测试 单元测试(英语:Unit Testing)又称为模块测试,是针对程序模块(软件设计的最小单位)来进行正确性检验的测试工作.程序单元是应用的最小可测试部 ...
- 基于Springboot+Junit+Mockito做单元测试
前言 前面的两篇文章讨论过< 为什么要写单元测试,何时写,写多细 >和<单元测试规范>,这篇文章介绍如何使用Springboot+Junit+Mockito做单元测试,案例选取 ...
- 单元测试er——为什么真的真的要写单元测试
优点 为什么很多技术或者知识要说优点?因为有些道理看着很简单,大家表面上都觉得对,但是做的时候又不去做或者做不到.其中有一个很重要原因是骨子里或者潜意识并没有真实觉得这是对的,一旦想去做的时候同时会冒 ...
- 为什么从前那些.NET开发者都不写单元测试呢?
楔子 四年前我虽然也写了很多年代码,由于公司虽然规模不小,却并非一家规范化的软件公司,因此在项目中严格意义上来说并没有架构设计.也不写单元测试,后来有幸加入了一家公司,这家公司虽然也是一家小公司,但是 ...
- VSTS写单元测试
用VSTS写单元测试 许多应用程序都会用到“用户”类型,今天我要用的是ConsoleApplicatio ...
- 如何为 Vue 项目写单元测试
https://www.w3ctech.com/topic/2052 如何为 Vue 项目写单元测试 前端工程 明非 2017-07-18 4685 访问 1 分享 微信分享 译者:明非 链接:htt ...
随机推荐
- 使用 PHP 创建 Excel 读取器类
介绍: PHPExcel-1.8.1读取excel 创建 ExcelReader 类: ExcelReader 类旨在从 Excel 文件中读取数据.它以文件路径作为输入,并提供一个方法来从 Exce ...
- 征婚 SQL
[男]程序员是这么征婚滴 SELECT * FROM 女人们 WHERE 未婚=true AND Gay=false AND 处女=true AND 有魅力 =true AND 条件 IN (漂亮 ...
- linux服务器运行java项目, 监控查看内存、储存空间和cpu占用率
服务器部署方式为tomcat中运行war包的方式, 有一次重新部署时候发现报异常堆栈溢出了. 想要定位到某个war包中通过学习整理出此篇文章以作记录笔记. 关于远程调试, 可以本地对线上代码debug ...
- FREERTOS_LWIP TcpServer 加快接收速度
刚开始调试时,关注点都在接收缓存等参数上,接受的间隔上限时钟在250ms左右. 后来发现是其中一个参数的设定决定了接收的速度,调整参数后,可以达到每80ms接收1024个字节. 发文留存,备忘.
- 话说神奇的content="IE=edge,chrome=1"的meta标签内容
这是个是IE8的专用标记,用来指定IE8浏览器去模拟某个特定版本的IE浏览器的渲染方式(比如人见人烦的IE6),以此来解决部分兼容问题,例如模拟IE7的具体方式如下: < meta http-e ...
- 17.1K star!两小时就能训练出专属于自己的个性化小模型,这个开源项目让AI触手可及!
「只需一张消费级显卡,2小时完成26M参数GPT训练!」「从零构建中文大模型的最佳实践指南」「兼容OpenAI API,轻松接入各类AI应用平台」 项目介绍 MiniMind是由开发者Jingyao ...
- 331K star!福利来啦,搞定所有API开发需求,这个开源神器绝了!
嗨,大家好,我是小华同学,关注我们获得"最新.最全.最优质"开源项目和高效工作学习方法 「public-apis」是GitHub上最全面的免费API资源库,收录了涵盖商业.娱乐.教 ...
- FastAPI中的复杂查询与原子更新指南
title: FastAPI中的复杂查询与原子更新指南 date: 2025/05/02 20:33:32 updated: 2025/05/02 20:33:32 author: cmdragon ...
- 【工具】FreePic2PDF+PdgCntEditor|PDF批量添加书签(Windows)
这俩软件都不大,比较便携. FreePic2PDF: 我下载的来源:https://www.52pojie.cn/thread-1317140-1-1.html(包含下载链接https://www.l ...
- 通过 Nuke 为 Dotnet Core 应用构建自动化流程
为什么使用Nuke 最开始了解Nuke,是浏览github时,刷到了这个项目,看简介可以通过C# 来定义构建任务和流程,这一点很新颖,对我来讲,c# 显然更容易理解和维护. 再看给出的示例,确实比较清 ...