首页 > 其他分享 >单元测试中的@SpringBootTest和@RunWith

单元测试中的@SpringBootTest和@RunWith

时间:2023-08-15 16:49:04浏览次数:34  
标签:web RunWith 启动 配置 单元测试 SpringBootTest PORT

背景:平常都是写功能,写业务代码忽略了对测试案例的理解,借此机会梳理记录一下测试案例中常用到的的几个注解。

一:@SpringBootTest
作用是加载ApplicationContext,启动spring容器。使用@SpringBootTest时并没有像@ContextConfiguration一样显示指定locations或classes属性,原因在于@SpringBootTest注解会自动检索程序的配置文件,检索顺序是从当前包开始,逐级向上查找@SpringBootApplication@SpringBootConfiguration注解的类。

常用的配置项如下:

    value 指定配置属性
    properties 指定配置属性,和value意义相同
    classes 指定配置类,等同于@ContextConfiguration中的class,若没有显示指定,将查找嵌套的@Configuration类,然后返回到SpringBootConfiguration搜索配置
    webEnvironment 指定web环境,可选值有:MOCK、RANDOM_PORT、DEFINED_PORT、NONE

webEnvironment详细说明:
MOCK 此值为默认值,该类型提供一个mock环境,此时内嵌的服务(servlet容器)并没有真正启动,也不会监听web端口。
RANDOM_PORT 启动一个真实的web服务,监听一个随机端口。

DEFINED_PORT启动一个真实的web服务,监听一个定义好的端口(从配置中读取)。

NONE启动一个非web的ApplicationContext,既不提供mock环境,也不提供真是的web服务。

二:@RunWith
junit中的注解,当一个类用@RunWith注释或继承一个用@RunWith注释的类时,JUnit将调用它所引用的类来运行该类中的测试而不是开发者去在junit内部去构建它。

举例说明:

 


注意点:发现idea中springboot项目不加@RunWith仍然可以运行,所以比较疑问到底加不加,从网上获取到比较比较准确的说法如下:

标准测试类里是要有@RunWith的,作用是告诉java你这个类通过用什么运行环境运行,例如启动和创建spring的应用上下文。否则你需要为此在启动时写一堆的环境配置代码。你在IDEA里去掉@RunWith仍然能跑是因为在IDEA里识别为一个JUNIT的运行环境,相当于就是一个自识别的RUNWITH环境配置。但在其他IDE里并没有。
所以,为了你的代码能在其他IDE里边正常跑,建议还是加@RunWith

转自:https://blog.csdn.net/m0_38036104/article/details/109510905

标签:web,RunWith,启动,配置,单元测试,SpringBootTest,PORT
From: https://www.cnblogs.com/fulaien/p/17631684.html

相关文章

  • 如何高效地编写Go单元测试
    前言单元测试是代码质量的保证,良好的单元测试不仅能够提前暴露代码问题,还极大便利了代码重构,它能保证代码重构前后功能保持一致,让重构活动能够顺利的进行下去。Go对单元测试的支持已经相当友好了,原生的标准库就已经支持了单元测试。在Go中编写单元测试也非常简单,Go认为以_test.g......
  • ASPICE流程编码和单元测试
    ASPICE流程编码和单元测试是指根据详细设计,编写符合ASPICE标准的代码,并对每个模块进行单元测试。这一过程包括以下步骤:编写代码:根据详细设计,编写符合ASPICE标准的代码,确保代码质量和可维护性。代码审查:对编写好的代码进行审查,发现并纠正潜在问题,确保代码质量和可靠性。单元测试计划......
  • 在单元测试中使用Jest模拟VS Code extension API
    对VSCodeextension进行单元测试时通常会遇到一个问题,代码中所使用的VSCode编辑器的功能都依赖于vscode库,但是我们在单元测试中并没有添加对vscode库的依赖,所以导致运行单元测试时出错。由于vscode库是作为第三方依赖被引入到我们的VSCodeextension中的,所以它并不受我们的......
  • @SpringBootTest
     1.学会使用Test,让自己的代码不再有bug——@SpringBootTest的妙用 https://baijiahao.baidu.com/s?id=1760961522946985249&wfr=spider&for=pc2.SpringBootTest人类使用指南https://zhuanlan.zhihu.com/p/111418479  3.解析“@ExtendWith注解“https://blog.csdn......
  • SpringBoot 单元测试不执行:maven-surefire-plugin 版本问题
    SpringBoot单元测试不执行:maven-surefire-plugin版本问题 问题现象SpringBoot项目,在编写单元测试时,使用了JUnit4.13.2以上的版本。为了让Maven能自动运行单元测试,需要引入MavenSurefire或MavenFailsafe插件。项目中使用的maven-surefire-plugin版本号为......
  • VScode 中golang 单元测试,解决单元测试超时timeout30s
    目的:单元测试的主要目的是验证代码的每个单元(函数、方法)是否按照预期工作。提示:解决单元测试超时30s的问题在序号4 1准备以_test.go结尾文件和导入testing包在命名文件时需要让文件必须以_test结尾,在文件中导入testing包。单元测试源码文件可以由多个测试用例组成,每个测试......
  • 工具 – Vitest 与单元测试
    前言Vitest是一款配搭Vite的前端单元测试工具,可以用于取代Jasmine和Jest。我先聊一下测试,每当添加新代码或修改旧代码后,我们多少都得测试一下,以确保功能正确才能交付。这种测试通常只是写几个简单的调用,换换参数,console看看输出。没有问题也就ok了。大部分情况下并不......
  • android 单元测试之 JUnit
    android里面做单元测试第一,JUnit。     实用范围:     东西,比如业务逻辑,数据封装,数值计算等等。并不能测试androidapi。第二,采用Instrumentation.Android单元测试的主入口是InstrumentationTestRunner。它相当于JUnit当中TestRunner的作用。你可以将Instrumentat......
  • TestNG 使 Java 单元测试轻而易举
    http://www.ibm.com/developerworks/cn/java/j-testng/在每个现代软件包的构造阶段,测试这一实践都扮演着中心角色。过去那种先编写代码,然后有空的时候再测试(或者根本不测试)的日子已经一去不返,因为大多数开发人员现在认识到需要采用编码和测试彼此交织、同步推进的软件方法论,以便尽......
  • Mockito单元测试最佳实践
    Mockito可以帮助我们模拟创建对象,经常用于模拟外系统、数据库、及其它方法中调用的对象 使用mockito时,单元测试类需要加上注解@RunWith(MockitoJUnitRunner.class),在@Before方法中加上MockitoAnnotations.openMocks(this);使用spring框架时,经常使用@Autowired注解,在这里被注......