简介
配置与上一篇博客Spring入门案例(包含xml以及注解两种方式的使用)中的配置一样:
https://mp.csdn.net/postedit/103791421
在这篇博客中使用的是传统的Spring测试方法进行的测试,本文将使用Spring测试框架进行测试.
项目目录
传统的Spring测试与使用Spring测试框架测试的区别
Spring容器:我作为类的管理容器,别的类都被我控制,测试类也要被我控制
传统的测试存在的问题
每个测试都要重新启动Spring容器,启动容器的开销大,测试效率低下。
Spring测试框架所需的依赖(使用Spring容器时,才能使用Spring框架测试)
<!-- https://mvnrepository.com/artifact/org.springframework/spring-test -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>5.1.5.RELEASE</version>
<scope>test</scope>
</dependency>
传统Spring测试
编写测试类,添加Spring测试的注解
@ContextConfiguration详解
@ContextConfiguration
这个注解通常与 @RunWith(SpringJUnit4ClassRunner.class)
联合使用用来测试
当一个类添加了注解@Component
,那么他就自动变成了一个bean,就不需要再Spring配置文件中显示的配置了。把这些bean收集起来通常有两种方式,Java的方式和XML的方式。当这些bean收集起来之后,当我们想要在某个测试类使用@Autowired
注解来引入这些收集起来的bean时,只需要给这个测试类添加@ContextConfiguration
注解来标注我们想要导入这个测试类的某些bean。
XML文件通过<context:component-scan base-package="com.xiongluoluo.bean" />
标签将包下的bean全都自动扫描进来。
下面我们就可以测试了。(一定要注意扫描的范围)
@ContextConfiguration
括号里的locations = {"classpath*:/*.xml"}
就表示将class路径里的所有.xml文件都包括进来,刚刚创建的那么XML文件就会包括进来,那么里面自动扫描的bean就都可以拿到了,此时就可以在测试类中使用@Autowired
注解来获取之前自动扫描包下的所有bean
classpath和classpath*区别:
classpath:只会到你的class路径中查找找文件。
classpath*:不仅包含class路径,还包括jar文件中(class路径)进行查找。
错误:
正确: