SpringBoot——整合Junit测试

简单介绍:

其实Spring Boot的测试在之前我们就已经使用过了,只不过当时我们只是使用,并不知道他具体是怎么实现的,我们稍微介绍一下他在做测试的时候是怎么实现的:

SpringBoot的测试:

在test文件夹下面,他有一个包,这个包名和我们的引导类的报名其实是一样的,并且在和引导类在同一个包下面就有一个后缀为Tests的Java类,这个类就是我们的测试类,这个类只是一个模板而已,我们可以用也可以不用,我们现在就创建一个自己的测试类,我们不用他这个:

 我们从头开始创建一个测试类,我们从头开始构建这个类,这样我们就知道这个类是如何来的,以及他是由什么构成的:

为了方便记忆,我们依旧从之前Spring项目中的测试类开始引入,在之前我们写Spring的测试类的时候,我们首先写了两个注解:

这里的报错不用管,因为我没有导包,关键在于我们看这两个注释,我们在之前写Spring的测试类的时候是不是有印象我们写过,这两个注释是什么意思呢?

@Runwith:指定Spring的运行器,这个运行器的概念不是很重要,我们在后期如果有机会再去讨论这个,这个是固定格式

@Configuration:指定Spring的配置文件或者配置类。 这才是最重要的一个注解。

这个注解的作用就是将我们的环境引入进来,环境自然就是我们的Spring容器,我们是测试也是在Spring容器环境下进行的,所以我们需要将Spring容器引入进来,但是在他给我们的测试类模板中我们并没有看到这两个注释,难道说这个测试不需要使用Spring容器吗?

肯定是使用到了Spring的容器,但是我们直观的看,他并没有引入任何的配置文件,那么就需要想到它是使用的引导类中的Spring容器。它通过扫描包的方式,在同一个包下扫描到引导类,然后通过引导类找到并加载Spring容器的方式加载容器,并从容器中获取Bean示例的方式进行测试。

注意这里测试类和引导类的包要一样,那么如果我们创建的自己的测试类,他和引导类不在一个包下会怎么样呢?

 我们把我们自己写的测试类放在其他包下,注意上图中的包,我们放在了MyTest包下面,这时候他和 引导类就不在同一个包下,这时候它会如何寻找Spring容器呢? 

 他找不到容器,并且抛出了一个异常,主要的内容是红色框里面的洋文,这个洋文的意思是:找不到@SpringBootConfiguration,您需要在测试中使用@ContextConfiguration或@SpringBootTest(class=...)。这一看明白了,找不到配置文件或者配置类,你要么用@ContextConfiguration给我指明你容器的位置,要么用@SpringBootConfiguration这个注解给我指出来也行。那么怎么指出来呢,其实就写上我们引导类的类就可以了,因为我们就是通过引导类去帮我们加载Spring容器,所以,如果我们要定义一个测试类,这个测试类和引导类并不在一个包下,那么我们就需要进行一下配置才能让他成功运行:

这样我们就可以让我们自己写的测试类找到Spring容器的位置并顺利的加载Spring容器进行测试,看运行结果:

在现阶段,我们只需要知道SpringBoot的测试类需要放在和引导类一个包或者它的子包下,并且在类上添加@SpringBootTest注解。如果自己写的类并不在引导类的包下或者它的子包下,那么就需要通过在@SpringBootTest的class属性中指定引导类的方式指向引导类,通过引导类找到Spring的容器,加载容器后获取Bean示例进行测试。 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值