spring-boot-test与 spring-boot-starter-test 区别

springboot--单元测试 Spring boot 提供一系列测试工具集及注释方便我们进行测试spring-boot-test提供核心测试能力,spring-boot-test-autoconfigure 提供测试的一些自动化配置我们只需导入spring-boot-starter-test即可整合测试。 阅读详情

spring-boot-test 和 spring-boot-starter-test 是 Spring Boot 测试中两个紧密相关但角色完全不同的组件。

简单来说,它们的核心区别是:

  • spring-boot-starter-test:一个 Starter,它本身不包含功能代码,而是一个依赖项的集合。它的目的是为了方便地引入所有测试需要的库。

  • spring-boot-test:一个 核心模块,它包含了 Spring Boot 提供的实际测试功能代码和注解(如 @SpringBootTest)。

详细对比

为了更清晰地理解,我们用一个表格来对比:

特性spring-boot-starter-test (启动器)spring-boot-test (核心模块)
角色依赖管理工具 (Dependency Aggregator)功能提供者 (Functional Artifact)
主要目的一键导入所有常用的测试依赖,并确保它们的版本相互兼容。提供 Spring Boot 特有的测试基础设施和注解。
包含内容不包含实际功能代码,只包含一个 pom.xml 文件来定义依赖。包含 @SpringBootTest, TestRestTemplate, MockMvc 等的实现代码。
依赖关系依赖于 spring-boot-test 以及其他一大堆测试库(JUnit, Mockito, AssertJ等)。是 spring-boot-starter-test 所依赖的众多组件之一。
如何使用在你的项目 pom.xml 或 build.gradle 中声明它。通常不需要直接声明,因为它会通过 spring-boot-starter-test 自动传递依赖进来。

深入理解:spring-boot-starter-test 包含了什么?

当你声明了 spring-boot-starter-test,你实际上引入了以下一整套测试库:

  1. spring-boot-test: 提供 Spring Boot 测试的核心功能。

  2. spring-test & spring-core: Spring Framework 的测试上下文框架。

  3. JUnit Jupiter (junit-jupiter): 现代 JUnit 5 的 API 和引擎。

  4. Mockito & Mockito JUnit Jupiter: 流行的 Mock 框架及其与 JUnit 5 的集成。

  5. AssertJ: 流式断言库,让断言更优雅、更强大。

  6. JsonPath: 用于解析 JSON 数据的库,在测试中验证 JSON 响应非常方便。

  7. Hamcrest (较老版本中): 另一个匹配器库(现在更推荐 AssertJ)。

应该如何选择?

99.9% 的情况下,你应该在你的 Spring Boot 项目中使用 spring-boot-starter-test。

在你的 pom.xml 中这样写:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <scope>test</scope> <!-- 非常重要,确保这些依赖只用于测试 -->
    <version>3.2.5</version> <!-- 使用你的Spring Boot版本 -->
</dependency>

什么情况下会直接使用 spring-boot-test?

几乎不会。除非你的项目有非常特殊的需求,比如:

  • 你只想使用 @SpringBootTest 注解,但希望自己手动管理所有其他测试库的版本。

  • 你在开发一个特殊的插件或工具,它只需要 Spring Boot 的测试基础设施,而不需要完整的测试套件(JUnit, Mockito 等)。

但这种场景极其罕见。直接引入 spring-boot-test 而不引入 spring-boot-starter-test 会导致你缺少 JUnit、Mockito 等核心测试框架,你需要手动把它们一个一个加回来,这完全违背了 Spring Boot Starter 简化配置的初衷。


总结

spring-boot-starter-testspring-boot-test
关系“购物车”“购物车里的一个商品”
你的操作把整个“购物车”(starter-test)加入项目购物车(starter-test)会自动把你想要的“商品”(spring-boot-test)带进来
结论直接使用这个就行不需要关心它,它是自动带来的

记住这个简单的法则:在 Spring Boot 项目中写测试,就引入 spring-boot-starter-test。 它会帮你处理好一切。

Spring Boot Test 系列1 - 入门 文章目录Sprint Boot Test 系列1 - 入门前言创建Spring Boot项目Spring Boot Starter Test依赖集成测试集成测试,不启动server集成测试,启动server单元测试后记参考文档 Sprint Boot Test 系列1 - 入门 前言 本文为Spring Boot Test系列的第一篇的入门文章。 工具: Intellij IDEA Ultimate Spring Boot 2.4.0 JUnit5 (Spring Boot Test 2.4.0默认为JU 阅读详情

相关推荐

【SpringBoot 4.x 第112节】JUnit 5 与 Mockito 实战:Mock、Spy、参数化测试!

🏆 本文收录于 《滚雪球学 Spring Boot 4.x》 专栏。本专栏面向 有一定 Java 基础,但尚未系统学习 Spring Boot 的读者,采用“滚雪球式学习法”:先跑通、再理解、再重构、再上线,带你从第一个 Hello API 开始,逐步完成一个可部署、可监控、可扩展的后端项目。

**My Coding Family** 468

Springboot - 12.test集成

是Spring Boot框架中的一个模块,用于支持在项目中进行单元测试和集成测试。它提供了一些依赖项和工具,使得编写和运行测试变得更加方便。以下是关于的全面介绍:包含了一系列用于测试的依赖项,包括JUnit、Mockito、Hamcrest等。这些依赖项使得编写测试变得更加容易,开发人员可以利用这些工具来创建和执行各种类型的测试。提供了许多功能和工具,帮助开发人员编写高质量的单元测试和集成测试。以下是一些主要功能:Spring应用程序上下文管理:会自动配置一个Spring应用程序上下文,这使得在测试中可以使

yueerba126的博客 3081

ADC噪声参数博弈论:为何24位ADC的有效分辨率可能不如16位?

本文深入探讨了ADC噪声参数的核心矛盾,揭示了24位ADC有效分辨率可能不如16位ADC的根本原因。关键在于跳出单纯比较位数的误区,转而关注输入参考噪声这一绝对指标。文章通过分析参考电压对满量程范围和噪声模型的影响,阐述了动态范围与最小可测信号之间的取舍逻辑,为工程师提供了基于系统实际需求的ADC选型与噪声评估框架。

snow3的博客 704

SpringBootTest单元测试组件

SpringBootTest单元测试组件 一、SpringbootTest 使用Junit4开发 1、添加依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency>

青春不散场的专栏 3096

STM32 CAN发送丢包?3个邮箱轮询法实测有效(附代码)

本文深入分析了STM32 CAN总线发送丢包的根本原因,指出其内置CAN控制器的三个发送邮箱是硬件瓶颈。针对高负载场景,提供了实测有效的优化方案,重点介绍了非阻塞的邮箱状态轮询法,该方法通过主动轮询三个邮箱的空闲状态,充分利用硬件资源,显著提升发送稳定性并避免任务阻塞。文中附有可直接使用的示例代码。

weixin_29189381的博客 195

cesium自定义指南针

项目需要一个指南针,用鼠标按住旋转指针,会让3d地图旋转,点击中心点重置方位。当然可以使用插件cesium-navigation-es6,但是样式不好修改,所以我自定义了一个指南针。

weixin_47017648的博客 750

SpringBoot Test详解

spring-boot-test项目:包含核心功能spring-boot-test-autoconfigure项目:支持自动配置通常情况下,我们通过spring-boot-starter-test的Starter来引入SpringBoot的核心支持项目以及单元测试项目以及单元测试库。JUnit:一个Java语言的单元测试框架:为SpringBoot应用提供集成测试和工具支持:支持流式断言的Java测试框架Hamcrest:一个匹配器库Mockito:一个Java Mock框架。

m0_74823452的博客 2961

深入解析 TDA4VM/VH R5F 核中断机制:VIC 与非 VIC 模式下的实战对比与优化

本文深入解析了TI TDA4VM/VH平台中ARMv7-R架构R5F核的两种中断处理机制:VIC模式与非VIC模式。通过对比硬件自动跳转与软件向量表分发的核心流程、实战代码示例及性能差异,为开发者提供了基于实时性、灵活性与调试需求的选择指南和优化建议,帮助构建更稳定的嵌入式系统。

weixin_29159441的博客 98

spring-boot-starter-test

排除Junit4 springboot2.2.x以下的版本,只包含junit4.x的版本 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.4.RELEASE</version>

HongYu012的博客 9690

Android手机本地语音转文字实战:用FunASR+ONNX Runtime打造离线ASR应用(附模型下载)

本文详细介绍了如何在Android应用中集成FunASR和ONNX Runtime,构建高性能的离线语音识别系统。通过模型选择、工程化集成和性能调优等实战技巧,开发者可以实现本地语音转文字功能,有效保护用户隐私并提升响应速度。

weixin_29046611的博客 266

基于STM32单片机的智能分拣系统

基于STM32单片机的智能分拣系统是一种高效、精准的自动化分拣解决方案,适用于物流、仓储、制造业等领域。该系统利用STM32单片机作为核心控制器,结合传感器技术、电机控制算法和通信模块,实现对物品的自动识别、分类和分拣。通过智能化的设计,该系统能够大幅提高分拣效率,降低人工成本,并减少错误率。基于STM32单片机的智能分拣系统是一种高效、精准、低成本的自动化解决方案,能够广泛应用于物流、制造、环保等领域。

qq_62634009的博客 1940

spring-boot-starter-test的junit-vintage-engine和junit-jupiter-engine之间的区别

如果你的 Spring 项目使用的新的 Spring Boot 版本的话,你应该默认使用了 JUnit 5 的引擎,因此为了兼容性,你需要在 spring-boot-starter-test 这个 POM 引用的时候将 JUnit 4 的引擎去除掉。org.junit.jupiter.api.Test 和 org.junit.Test 同时存在,如果不小心引入了org.junit.Test ,那么就会发生这个spring 属性注入为null的情况。​ 区别:自己写的以前单元测试,是public。

zzy7075的专栏 610

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

SpringBoot集成单元测试spring-boot-starter-test

二、在test文件夹下编写测试类。

Java后端技术栈 3309

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Spring Boot 与 Maven 依赖管理详解

在日常 Java 开发中,我们几乎都会接触到 Maven 和 Spring Boot。和有什么区别?Maven 多模块项目如何管理依赖?Spring Boot 为什么只引入一个 Starter 就能使用很多功能?有什么区别?单元测试为什么还要引入?Spring Boot 各版本支持哪些 JDK?本文将系统梳理这些知识点。依赖聚合包一次性引入一组兼容的依赖例如:</</</spring-webtomcatjacksonvalidation↓真正引入依赖↓统一管理版本。

西凉的悲伤博客 319

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

使用SpringBootTest时却没有初始化Spring容器?

今天使用SpringBootTest测试时,发现spring容器都没有初始化,自然后续的结果就失败了,那么是哪里出了问题呢?

罗宸熙的博客 1059

Spring Boot面试题 35 问

1、什么是 Spring Boot? Spring Boot 是 Spring 开源组织下的子项目,是 Spring 组件一站式解决方案,主要是简化了使用 Spring 的难度,简省了繁重的配置,提供了各种启动器,开发者能快速上手。 2、为什么要用 Spring Boot? 快速开发 快速整合第三方框架(Maven依赖关系,Maven继承) 简化XML的配置 内置嵌入HTTP服务器(Tomcat(默认)、Jetty),降低了对环境的要求 3、Spring Boot 的优点? 容易上手,提升开发效率,为

养歌的博客 1万+

SpringBoot 单元测试 @SpringBootTest 与 @RunWith

一. 单元测试 SpringMVC: @ContextConfiguration(locations="classpath:applicationContext.xml") #用来指定Spring的配置文件 @RunWith(SpringJUnit4ClassRunner.class) #指定用那种驱动进行单元测试 public class IOCTest{ } @RunWith(xx.class) 指定Spring的单元测试模块来执行标了@Test注解的测试方法 SpringBoot: @RunW

howeres的博客 8987

开发人员为什么要写测试用例?

作为一名开发人员,你可能会发现周围的开发并不太喜欢写,甚至有些同学根本不写测试用例,认为写测试用例完全是浪费时间,或者是测试用例只是测试的事情。在开发过程中,往往都是呼啦啦的写完代码,然后用或者 Httpclient 等接口工具请求下接口,看着没问题就提测,然后等测试人员反馈问题。这大概和职业以及所处的环境又关系,有些是公司没有相关的要求,有些是注重敏捷开发(项目和自己总有一个敏捷),不过群里有些同学问测试用例的事情,而我前段时间正好在写测试用例,所以做了一些笔记,在这里和大家分享一下。

hlsxjh的博客 848

Springboot测试类之@RunWith注解

@runWith注解作用: --@RunWith就是一个运行器 --@RunWith(JUnit4.class)就是指用JUnit4来运行 --@RunWith(SpringJUnit4ClassRunner.class),让测试运行于Spring测试环 境,以便在测试开始的时候自动创建Spring的应用上下文 --@RunWith(Suite.class)的话就是一套测试集合 引申:Spring Boot 1.5.2 Junit测试使用 Spring 进行单元测试 方法1: @RunWith(Sp

qq_43547991的博客 1万+

boot spring test 文档_Spring 和 Spring Boot 之间到底有啥区别?

概述对于 Spring和 SpringBoot到底有什么区别,我听到了很多答案,刚开始迈入学习 SpringBoot的我当时也是一头雾水,随着经验的积累、我慢慢理解了这两个框架到底有什么区别,相信对于用了 SpringBoot很久的同学来说,还不是很理解 SpringBoot到底和 Spring有什么区别,看完文章中的比较,或许你有了不同的答案和看法!什么是Spring作为 Java开发人员,大家...

weixin_30984001的博客 331

SpringBoot单元测试(一)

SpringBoot单元测试

今天又是充满希望的一天 2101
上一篇: mybatis 插件
下一篇: maven scope 详解
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

仰望星空@脚踏实地

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值