首页 > 其他分享 >@SpringBootTest与@RunWith注解的区别

@SpringBootTest与@RunWith注解的区别

时间:2023-12-07 18:58:44浏览次数:42  
标签:RunWith Runner spring SpringBootTest 注解 junit

@SpringBootTest与@RunWith注解的区别

@SpringBootTest与@RunWith注解的区别在于:@SpringBootTest是spring的注解,用于加载ApplicationContext,启动spring容器;而@RunWith是junit的注解,它指定了junit测试的时候使用的Runner(运行器)类。通常@SpringBootTest与@RunWith 这两个是配合使用的。

1.关于@SpringBootTest注解

@SpringBootTest注解是SpringBoot自1.4.0版本开始引入的一个用于测试的注解,它替代了spring-test中的 @ContextConfiguration注解,其作用是启动spring容器、加载ApplicationContext。

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

2.关于@RunWith注解

@RunWith是JUnit的一个注解,它指定了junit测试的时候使用的Runner(运行器)类。在JUnit中有很多个Runner,他们负责调用你的测试代码,每一个Runner都有各自的特殊功能,你要根据需要选择不同的Runner来运行你的测试代码。

当一个类用@RunWith注释或继承一个用@RunWith注释的类时,JUnit将调用它所引用的类来运行该类中的测试而不是开发者去在junit内部去构建它。我们在开发过程中就是使用这个特性。

一般单元测试会把spring与junit结合测试,所以@SpringBootTest与@RunWith这两个是配合使用的。但如果只是简单的做普通Java测试,不涉及Spring Web项目,可以省略@RunWith注解,这样系统会自动使用默认Runner来运行代码。

延伸阅读

java注解的作用是什么

Java注解又叫java标注,java提供了一套机制,使得我们可以对方法、类、参数、包、域以及变量等添加标准(即附上某些信息)。且在以后某个时段通过反射将标注的信息提取出来以供使用。java注解的常见作用如下:

1.生成文档

这是java注解最常见的作用,通过代码中标记的元数据生成javadoc文档,常用的有@see @param @return等。

2.跟踪代码依赖性

跟踪代码依赖性,实现替代配置文件功能。比较常见的是spring 2.5 开始的基于注解配置。作用就是减少配置。现在的框架基本都使用了这种配置来减少配置文件的数量。

3.编译检查

编译器在编译过程中通过代码中标记的元数据进行检查和验证。如@Override放在方法前,如果你这个方法并不是覆盖了超类方法,则编译时就能检查出。

4.编译时动态处理

编译时动态处理代码中标记的元数据,如动态生成代码,Lombok提供的一些注解@Data,来动态的生成getter setter toString等等方法。

5.运行时进行动态处理

运行时通过代码中显示的元数据进行动态处理,如使用反射注入实例。

原文链接:https://worktile.com/kb/ask/37497.html

标签:RunWith,Runner,spring,SpringBootTest,注解,junit
From: https://www.cnblogs.com/sunny3158/p/17883697.html

相关文章

  • @RunWith(SpringRunner.class)注解的作用
    @RunWith(SpringRunner.class)注解的作用通俗点:@RunWith(SpringRunner.class)的作用表明Test测试类要使用注入的类,比如@Autowired注入的类,有了@RunWith(SpringRunner.class)这些类才能实例化到spring容器中,自动注入才能生效官方点:@RunWith注解是JUnit测试框架中的一种注解,......
  • java 单元测试之 - Spring框架提供的单元/集成测试注解
    java单元测试之-Spring框架提供的单元/集成测试注解Spring框架提供了很多注解来辅助完成单元测试和集成测试(备注:这里的集成测试指容器内部的集成测试,非系统间的集成测试),先看看Spring框架提供了哪些注解以及对应的作用。@RunWith(SpringRunner.class)/@ExtendWith(Spring......
  • Springboot AOP注解实现切面拦截
    注解声明@Target({ElementType.METHOD,ElementType.TYPE})@Retention(RetentionPolicy.RUNTIME)@Documentedpublic@interfacexxxAnnotation{/***注解属性*/Objectxxx()default5;}注解逻辑实现/***@authoralpha.*@classNamexxxAn......
  • EF CodeFirst 数据注解特性详解
    数据注解特性是.NET特性,可以在EF或者EFCore中,应用于实体类上或者属性上进行生成数据表,并对表名、字段类型、长度、主键、是否为空、外键等进行设置。1、命名空间在EF6和EFCore中,数据注解特性包含在System.ComponentModel.DataAnnotations命名空间和System.ComponentModel.Dat......
  • Springcloud学习笔记58--SpringBoot拦截全局异常统一处理(RestControllerAdvice注解)
    1. 应用场景如果和前端约定好使用固定的自定义格式返回参数,如下:{"code":200,"msg":"操作成功","data":{"equipment":55,"code":99,"point":2}}但在运行时发现了异常,默认的异常返回格式如下:......
  • Java 通过反射获取注解属性信息以及状态中字典
    一、创建存储对象importjava.util.ArrayList;importjava.util.HashMap;importjava.util.List;importjava.util.Map;/***属性对象存储类*/publicclassMetadataField{/***key对应对象中间的属性*/privateStringkey;/***字......
  • 注解与反射
    注解与反射注解注解:就是以@开头的比如:@Override内置注解例如:@Override:重写注解@Deprecated:表示已过时的注解(不推荐使用某方法)@SuppressWarnings(String[]value()):镇压警告,参数是value=一个字符串数组元注解修饰其他注解的注解@Target:描述注解的使用范围@Retention:表......
  • java 序列话注解 @Transient
    java序列话注解@TransientJava序列化注解及其使用简介在Java程序中,对象的序列化是指将对象转换为字节流的过程,以便在网络上传输或保存到文件中。而反序列化则是将字节流重新转换为对象。Java提供了java.io.Serializable接口,用于标识可序列化的类。然而,有时我们希望......
  • @SpringBootTest 和 @RunWith 注解不能识别 单元测试第一步引入maven依赖
    @SpringBootTest和@RunWith注解不能识别单元测试第一步引入maven依赖一、背景    最近在预研 Rocketmq,在写小例子的时候,需要编写测试代码,突然间发现我的 @SpringBootTest 和 @RunWith 这两个注解不能识别,于是展开了我的问题排查过程。问题截图如下:二、问题排......
  • @RunWith注解找不到,怎么办? spring-boot-starter-test 2.5.5 版本只需要在类上加上@Spr
    @RunWith注解找不到,怎么办?spring-boot-starter-test2.5.5版本只需要在类上加上@SpringBootTest即可,不需要再加@RunWith()注解了。1、新版spring-boot-starter-test不再集成junit,而是junit-jupiter在这里,先说明我使用的版本SpringBoot2.5.5spring-boot-starter-test2.5......