Spring Boot 单元测试详解+实战教程

转载自   Spring Boot 单元测试详解+实战教程

Spring Boot 的测试类库

Spring Boot 提供了许多实用工具和注解来帮助测试应用程序,主要包括以下两个模块。

  • spring-boot-test:支持测试的核心内容。

  • spring-boot-test-autoconfigure:支持测试的自动化配置。

开发进行只要使用 spring-boot-starter-test 启动器就能引入这些 Spring Boot 测试模块,还能引入一些像 JUnit,AssertJ,Hamcrest 及其他一些有用的类库,具体如下所示。

  • JUnit:Java 应用程序单元测试标准类库。

  • Spring Test & Spring Boot Test:Spring Boot 应用程序功能集成化测试支持。

  • AssertJ:一个轻量级的断言类库。

  • Hamcrest:一个对象匹配器类库。

  • Mockito:一个Java Mock测试框架,默认支付 1.x,可以修改为 2.x。

  • JSONassert:一个用于JSON的断言库。

  • JsonPath:一个JSON操作类库。

下面是 Maven 的依赖关系图。

以上这些都是 Spring Boot 提供的一些比较常用的测试类库,如果上面的还不能满足你的需要,你也可以随意添加其他的以上没有的类库。

测试 Spring Boot 应用程序

添加 Maven 依赖

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><version>1.5.10.RELEASE</version><scope>test</scope>
</dependency>

1、 要让一个普通类变成一个单元测试类只需要在类名上加入 @SpringBootTest 和 @RunWith(SpringRunner.class) 两个注释即可。

2、 在测试方法上加上 @Test 注释。

如果测试需要做 REST 调用,可以 @Autowire 一个 TestRestTemplate。

@RunWith(SpringRunner.class)
@SpringBootTest
public class BBTestAA {@Autowiredprivate TestRestTemplate testRestTemplate;@Testpublic void testDemo() {...}}

GET请求测试

@Test
public void get() throws Exception {Map<String,String> multiValueMap = new HashMap<>();multiValueMap.put("username","Java技术栈");ActResult result = testRestTemplate.getForObject("/test/getUser?username={username}",ActResult.class,multiValueMap);Assert.assertEquals(result.getCode(),0);
}

POST请求测试

@Test
public void post() throws Exception {MultiValueMap multiValueMap = new LinkedMultiValueMap();multiValueMap.add("username","Java技术栈");ActResult result = testRestTemplate.postForObject("/test/post",multiValueMap,ActResult.class);Assert.assertEquals(result.getCode(),0);
}

文件上传测试

@Test
public void upload() throws Exception {Resource resource = new FileSystemResource("/home/javastack/test.jar");MultiValueMap multiValueMap = new LinkedMultiValueMap();multiValueMap.add("username","Java技术栈");multiValueMap.add("files",resource);ActResult result = testRestTemplate.postForObject("/test/upload",multiValueMap,ActResult.class);Assert.assertEquals(result.getCode(),0);
}

文件下载测试

@Test
public void download() throws Exception {HttpHeaders headers = new HttpHeaders();headers.set("token","javastack");HttpEntity formEntity = new HttpEntity(headers);String[] urlVariables = new String[]{"admin"};ResponseEntity<byte[]> response = testRestTemplate.exchange("/test/download?username={1}",HttpMethod.GET,formEntity,byte[].class,urlVariables);if (response.getStatusCode() == HttpStatus.OK) {Files.write(response.getBody(),new File("/home/javastack/test.jar"));}
}


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/328307.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

oracle修改filesystem,(转):oracle、filesystem、backup日常巡检脚本

1.总脚本xunjian.codeexport PS1"hostname$"[$PWD] umask 022cd /u02/xunjian#######################xunjian check##################################################----1. filesystem check 文件系统检查rm -f /u02/xunjian/devdb2_xunjian.txtecho "1.fi…

华为校招2019

面试是在一个酒店里面的&#xff0c;人很多&#xff0c;面试和流水线一样有20-30个面试官同时进行&#xff0c;面试分成2轮一轮是技术面&#xff0c;一轮是主面。 一面是技术面是一个比较年轻的面试官&#xff0c;面试时间在30-60分钟&#xff0c;先自我介绍&#xff0c;问了…

EQueue 2.3.2版本发布(支持高可用)

前言 前段时间针对EQueue的完善终于告一段落了&#xff0c;实在值得庆祝&#xff0c;自己的付出和坚持总算有了成果。这次新版本主要为EQueue实现了集群功能&#xff0c;基本实现了Broker的高可用。另外还增加了很多实用的功能&#xff0c;对性能也做了很多优化。总之&#xff…

oracle spacial,Oracle Spacial(空间数据库)geometry元数据结构

geometry元数据内容每一维的名称、上下限和容差值存放在系统表中&#xff0c;用户不能直接访问&#xff0c;通过三个视图来存取&#xff1a;USER_SDO_GEOM_METADATA&#xff0c;可以更新ALL_SDO_GEOM_METADATA&#xff0c;只可以查询DBA_SDO_GEOM_METADATA&#xff0c;DBA可查询…

银行营业网点管理系统——dao包(BranchesDao)

package BranchesMgr.dao;import java.util.List;import BranchesMgr.entity.Branches;/*** 网点信息表的借口* author Administrator**/ public interface BranchesDao {//查询所有网点信息List<Branches> getBranches();//根据id查询指定的网点信息Branches BranchesIn…

这 30 个常用的 Maven 命令你必须熟悉

转载自 这 30 个常用的 Maven 命令你必须熟悉maven 命令的格式为 mvn [plugin-name]:[goal-name]&#xff0c;可以接受的参数如下。-D 指定参数&#xff0c;如 -Dmaven.test.skiptrue 跳过单元测试&#xff1b; -P 指定 Profile 配置&#xff0c;可以用于区分环境&#xff1b…

阿里云服务器本地连接(windows) 阿里云服务器和本地的磁盘共享数据

一、向Windows服务器上传下载文件方式 方法有很多种&#xff0c;此处介绍远程桌面的本地资源共享方法。 1、运行mstsc&#xff0c;连接远程桌面的时候&#xff0c;点“选项>>” 2、“本地资源”-->详细信息。 3、“磁盘驱动器”前面打钩。 4、连接远程电脑后&#…

10月15日 2016中国开源年会期待您的参与

由开源社主办的中国开源年会2016 (COSCon16 - China Open Source Conference 2016) 即将于今年10月15日-16日在北京举办。 这是一场-- 跨社区&#xff0c;跨技术领域&#xff0c;跨国度的年度盛会&#xff01; 您可以与真正的开源贡献者和参与者&#xff0c;直接互动&#xff0…

eclipse 创建ssm spring+springmvc+mybatis 实现登录注册

首先找到菜单栏中的Window 下的Preference 然后找到Server 下的 Runtime Environment 然后点击左侧的Add,因为小编用的是Tomcat 9.0 的&#xff0c;你的就要看自己的了&#xff0c;然后Next 然后找到自己存放Tomcat 的路径&#xff0c;然后Finish &#xff0c;最后Apply…

oracle 10741 trace,RedHat5.3上安装Oracle 10.2.0.1

RedHat 5.3上安装Oracle 10.2.0.11、系统环境&#xff1a;RedHat 5.3内存16G交换分区8G2、必须安装如下包&#xff0c;版本可不一样gcc-3.2.3-2make-3.79binutils-2.11openmotif-2.2.2-16setarch-1.3-1compat-gcc-7.3-2.96.122compat-gcc-c-7.3-2.96.122compat-libstdc-7.3-2.9…

达到年薪 40W 必需掌握的技术

转载自 达到年薪 40W 必需掌握的技术必需掌握的 Java 技术知识点 掌握Java编程语言&#xff0c;包含io/nio/socket/multi threads/collection/concurrency等功能的使用&#xff1b;熟练掌握jvm&#xff08;sun hotspot和ibm j9&#xff09;内存模型、gc垃圾回收调优等技能&…

银行营业网点管理系统——implt包(BranchesDaoImpl )

package BranchesMgr.dao.impl;/*** 网点信息表的实现类*/ import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List;import BranchesMgr.dao.BaseDao; import BranchesMgr.dao.BranchesDao; import BranchesMgr.entity.…

ASP.NET Core 启动方式(Hosting)

之前版本的ASP.NET程序必须依赖IIS来启动&#xff0c;而IIS上会为挂载在其中的ASP.NET 注册一个ISAPI filter。每当http请求过来时&#xff0c;IIS则会启动w3wp的worker process来开始整个ASP.NET runtime程序。相信大家都这样的流程都有相应的了解。在.net core之前&#xff0…

浙江省医院鼻炎

主任医生&#xff1a;做个过敏源检测&#xff0c;看你是否是尘粉过敏&#xff0c;如果是可以做脱敏治疗&#xff0c;先做个皮试&#xff0c;你的特别厉害&#xff0c; 此时去521了 做皮试&#xff0c; 我&#xff1a;以前有医生说要手术割掉&#xff0c; 实习医生&#xff1…

oracle修改redolog路径,oracle修改redo log files路径

如果可以关闭数据库&#xff0c;可以采用下述步骤。如果不能关闭数据库&#xff0c;只能采用新建redo log files的方式来实现修改该redo 的路径了。一、shutdown the database二、拷贝redo log 文件到新的位置三、mount database四、重命名redo五、open database--1 .shutdown…

Java 10 实战第 1 篇:局部变量类型推断

转载自 Java 10 实战第 1 篇&#xff1a;局部变量类型推断现在 Java 9 被遗弃了直接升级到了 Java 10&#xff0c;之前也发过 Java 10 新特性的文章&#xff0c;现在是开始实战 Java 10 的时候了。 今天要实战的是 Java 10 中最重要的特性&#xff1a;局部变量类型推断&#…

【GitLab】与idea的搭配

【GitLab】与idea的搭配 2018年04月27日 18:07:48 星小丫头辰 阅读数&#xff1a;2167 版权声明&#xff1a;很多博客都参考或者直接转载自网络&#xff0c;如有不便&#xff0c;请告知 https://blog.csdn.net/ma15732625261/article/details/80111356 前言&#xff1a; 由截…

Lind.DDD.RedisClient~对StackExchange.Redis调用者的封装及多路复用技术

两雄争霸 使用StackExchange.Redis的原因是因为它开源&#xff0c;免费&#xff0c;而对于商业化的ServiceStack.Redis&#xff0c;它将一步步被前者取代&#xff0c;开源将是一种趋势&#xff0c;商业化也值得被我们尊重&#xff0c;毕竟人家研究代码也不容易&#xff0c;做商…

php处理j数组,PHP Bean 类处理 数组处理

安装&#xff1a;composer require marstm/bean可以实现数据类型约束功能&#xff0c;形参约束&#xff0c;一次定义方便后期数据管理。ArrayList配置bean做数据处理ArrayList文档在使用类里面直接引入MarstmBeannamespace Marstm\Test;use Marstm\Bean;class TestJBean{use Be…

银行营业网点管理系统——implt包(CityAreaDaoImpl )

package BranchesMgr.dao.impl; /*** 城区的实现类*/ import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List;import BranchesMgr.dao.BaseDao; import BranchesMgr.dao.CityAreaDao; import BranchesMgr.entity.CityA…