@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.运行时进行动态处理
运行时通过代码中显示的元数据进行动态处理,如使用反射注入实例。