今天使用SpringBootTest测试时,发现spring容器都没有初始化,自然后续的结果就失败了,那么是哪里出了问题呢?
可以从如下几个方面考虑:
- 依赖是否引入正确
- 测试类所在的路径是否正确
- 是否添加正确的注解
- 目录是否标识正确
一、依赖是否引入正确?
众所周知,springboot的便捷之处就是想用什么依赖,直接引入相关的starter就行了。注意:是starter!!!
SpringBootTest依赖如下:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
注意:
- 该依赖的引入应在之间
- 之前强调的是starter,所以容易出错的地方如下:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-test</artifactId>
<scope>test</scope>
</dependency>
一个starter只差,就会天差地别!!!
二、测试类所在的路径是否正确?
总所周知,一个springboot项目的目录结构应该是这样的:
target目录不用管,它是项目运行后字段生成的,mian是我们写代码逻辑的地方,test是我们写测试类的地方,这里需要注意的是:main和test是在同一个目录下的,不要自己把test目录乱放!
测试类和spring启动类需要在同一路径下!
- ①和②表示同一个包路径,可以看到启动类和测试类在相同的路径下
- ③是springboot启动类
- ④是我们编写的测试类
三、是否添加正确的注解
@SpringBootTest注解大家都会加,但是**@Test**注解容易出现问题!
当我们在方法上加上@Test注解之后,有可能会导入错误的包,正确的包是:
import org.junit.jupiter.api.Test; //正确的
而不是下面这个junit的Test
import org.junit.Test;
四、目录是否标识正确
直观的方法就是看我们的目录的颜色:
如果相应的目录标识不正确,可以选择目录右键:
当然,还要另一种方式通过Project Structure进行设置,这里就不再赘述,需要的自行去查一下 😃